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,用英文的用户名测试登入是否成功
服务器端配置到此结束