(二)中我们完成了CAS SERVER 的部署,并且可以使用 admin/admin 登录进去了。这仅仅是简单的身份验证,实际应用中需要读取数据库的数据,下面我们来进一步配置 CAS 服务器怎么读取数据库的信息进行身份验证。
修改 tomcat/webapps/cas/WEB-INF/deployerConfigContext.xml 文件。
第一步
找到92行处,注释掉 SimpleTestUsernamePasswordAuthenticationHandler 这个验证 Handler,这个比较简单,只是判断用户名、密码相同即可通过,这个不能再实际应用中使用。并在下面添加如下代码:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select password from user where username=?" />
<property name="passwordEncoder" ref="MD5PasswordEncoder" />
</bean>
第二步
在末尾处添加
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" >
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url" >
<value>jdbc:mysql:192...........</value>
</property>
<property name="username" >
<value>bhz</value>
</property>
<property name="password" >
<value>bhz</value>
</property>
</bean>
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" >
<constructor-arg index="0">
<value>MD5</value>
</constructor-arg>
</bean>
第三步
最后复制 cas-server-3.4.3/modules/cas-server-support-jdbc-3.4.3.1.jar 和 mysql 驱动到 tomcat/webapps/cas/WEB-INF/lib 目录中。
配置解释
QueryDatabaseAuthenticationHandler是 cas-server-support-jdbc 提供的查询接口其中之一,QueryDatabaseAuthenticationHandler 是通过配置一个sql查询查出密码,与所给的密码进行匹配。
sql语句就是查询哪一张表,本例根据 user 表的 username 字段查询密码,CAS 会匹配用户输入的密码,如果匹配则通过;根据实际情况自行进行更改即可。
passwordEncoder,处理密码的加密,看你的应用中数据库保存的是明码还是加密过的,本例是使用MD5 加密,配置MD5PasswordEncoder这个 Handler ,cas 内置了 MD5 加密功能,所以只需配置即可。如果实际应用中使用公司自己的加密算法那么就需要自己写一个handler来处理密码,实现方式比较简单,创建一个类继承 "org.jasig.cas.authentication.handler.PasswordEncoder ,然后在 encode 方法中加密用户输入的密码然后返回即可。
第四步
我们最后在数据库设置用户名、密码,然后通过cas系统进行登录。若根据自定义用户名、密码登录成功,则至此为止cas服务端配置结束。