CAS SSO研究二:cas_serverクエリー・データベースによるユーザー名、パスワードの正確性の検証
1、jarパッケージの準備、bonecpデータソースの使用に慣れているため:
mysql jdbc駆動:mysql-connector-java-5.1.13-bin.jar
cas jdbcサポート:cas-server-support-jdbc-3.4.11.jar
データソース:bonecp-0.7.1.RELEASE.jar、guava-r09.jar
2、編集:WEB-INFdeployerConfigContext.xml、データソースを追加するには:
これでcas_が実現しましたserverクエリー・データベースによるユーザー名、パスワードの正確性の検証
mysql jdbc駆動:mysql-connector-java-5.1.13-bin.jar
cas jdbcサポート:cas-server-support-jdbc-3.4.11.jar
データソース:bonecp-0.7.1.RELEASE.jar、guava-r09.jar
2、編集:WEB-INFdeployerConfigContext.xml、データソースを追加するには:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="idleConnectionTestPeriod" value="60"/>
<property name="idleMaxAge" value="240"/>
<property name="maxConnectionsPerPartition" value="30"/>
<property name="minConnectionsPerPartition" value="10"/>
<property name="partitionCount" value="3"/>
<property name="acquireIncrement" value="5"/>
<property name="statementsCacheSize" value="100"/>
<property name="releaseHelperThreads" value="3"/>
</bean>
デフォルトのルール検証方法をコメントし、新しい検証を追加します. <!--
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
-->
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="select password from gg_user where loginname = ?" />
<property name="passwordEncoder" ref="passwordEncoder"/>
</bean>
passwordEncoder、カスタムencoderを使用しています.<bean id="passwordEncoder"
class="xx.xx.security.PassWordEncoder"/>
import org.jasig.cas.authentication.handler.PasswordEncoder;
import org.springframework.security.authentication.encoding.ShaPasswordEncoder;
public class PassWordEncoder implements PasswordEncoder {
@Override
public String encode(String args) {
ShaPasswordEncoder encoder = new ShaPasswordEncoder();
encoder.setEncodeHashAsBase64(true);
return encoder.encodePassword(args, null);
}
}
これでcas_が実現しましたserverクエリー・データベースによるユーザー名、パスワードの正確性の検証