CAS安装好默认使用的是静态用户和密码,但实际使用中,我们可能连接LDAP、数据库等其他情况。接下来,我们看一下如何使用CAS连接Mysql数据库。
创建数据库
1 | DROP TABLE IF EXISTS `users`; |
配置
使用数据库需要cas-server-support-jdbc的支持,在此依赖中的目录cas-4.2.1/cas-server-support-jdbc/src/main/java/org/jasig/cas/adaptors/jdbc中有多类组件完成配置。 以QueryDatabaseAuthenticationHandler为例,可参考官方文档
注意使用QueryDatabaseAuthenticationHandler作为数据验证方式需屏蔽一下类QueryAndEncodeDatabaseAuthenticationHandler,如下
QueryAndEncodeDatabaseAuthenticationHandler.java注释内容如下;1
2
3
4
5......
//import org.springframework.stereotype.Component;
......
//@Component("queryAndEncodeDatabaseAuthenticationHandler")
......
修改完成后进入目录cas-4.2.1/cas-server-support-jdbc,重新执行gradle clean build,生成jar包cas-4.2.1/cas-server-support-jdbc/build/libs/cas-server-support-jdbc-4.2.1.jar, 并将此jar包放入webapps/cas/WEB-INF/lib中,由于本例使用mysql,所以需将mysql驱动包mysql-connector-java-5.1.25.jar也放到lib目录中。
接下来在文件webapps/cas/WEB-INF/deployerConfigContext.xml中增加以下配置,并注释掉一行
1 | <bean id="dataSource" |
接着配置/webapps/cas/WEB-INF/cas.properties,添加以下内容
1 | # add by hode begin |
同时需取消注释项cas.jdbc.authn.query.sql,并添加sql语句1
cas.jdbc.authn.query.sql=select password from users where username=?
配置完成。重启tomcat即可用hode/123456进行登录,完成验证。
当然文明密码保存到数据库中是相当不安全的,所以需要保存加密后的密码,配置如下,此时md5后的结果与数据库的密码进行比较1
2
3
4
5
6deployerConfigContext.xml增加一行
<alias name="defaultPasswordEncoder" alias="passwordEncoder" />
cas.properties增加两行
cas.authn.password.encoding.char=UTF-8
cas.authn.password.encoding.alg=MD5