发表时间:2009-12-03
最后修改:2009-12-03
CASPasswordEncoder.java
package org.kr.test.casTest.sha;
import org.jasig.cas.authentication.handler.PasswordEncoder;
public class CASPasswordEncoder implements PasswordEncoder {
public static final String ENCRYPT_KEY = "密钥";
public String encode(String strSource){
String strR = null;
try {
strR = DigestUtil.digestString(strSource, "SHA");
} catch (Exception e) {
e.printStackTrace();
}
return strR;
}
}
|
把包org.kr.test.casTest.sha导出为caspasskey.jar,拷贝到cas/WEB-INF/lib目录下
打开文件cas/WEB-INF/deployerConfigContext.xml,找到
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
|
将它替换为
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="casDataSource" />
<property name="sql" value="select 密码 from 用户表 where lower([用户名]) = UPPER(?)" />
<property name="passwordEncoder" ref="myPasswordEncoder"/>
</bean>
|
注意,上面的 bean配置是在ID为credentialsToPrincipalResolvers的BEAN的 property list 里的,下面这个bean要在credentialsToPrincipalResolvers BEAN外面定义
<bean id="myPasswordEncoder"
class="org.kr.test.casTest.sha.CASPasswordEncoder"/> <!--这是我上文自定义的加密类-->
|
找到
<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />
|
在它的下方添加以下数据源代码
<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://数据库地址:3306/数据库名</value>
</property>
<property name="username">
<value>数据库访问用户名</value>
</property>
<property name="password">
<value>数据库访问密码</value>
</property>
</bean>
|
到此,数据库与cas服务端的连接已完成,登入http://localhost:8080/cas/login,用英文的用户名测试登入是否成功
服务器端配置到此结束