配置cas服务认证的验证方式(sql数据库或ldap)
一.配置sql认证
关于使用传统的关系型数据库做为验证用户和口令的数据源,在上一篇博文:中有提到过,关于关系型数据库的配置这里也再简单的重复下。具体的可以参考上一篇博文:周记(搭建cas验证服务)
1.导入cas数据库支持jar和数据库驱动jar。复制D:\cas-server-3.5.2.1\modules下面cas-server-support-jdbc-3.5.2.1.jar到D:\apache-tomcat-7.0.52\webapps\cas\WEB-INF\lib下。数据库这里使用的是Mysql,因此把Mysql数据库驱动包(mysql-connector-java-5.1.26-bin.jar)也复制到\cas\WEB-INF\lib文件夹下。
2.配置数据连接信息。打开D:\apache-tomcat-7.0.52\webapps\cas\WEB-INF\deployerConfigContext.xml文件,在<beanid="authenticationManager"节点上面添加数据源信息:
<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://localhost:3306/test?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>supre2015</value>
</property>
</bean>
3.配置验证规则。还是在上述的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="dataSource"></property>
<property name="sql" value="select password from tb_user where user_name=?"></property>
<!-- 密码自定义加密配置
<property name="passwordEncoder" ref="myPasswordEncoder" ></property> -->
</bean>
说明:a. name="dataSourec" 中的ref为上面我们配置数据库连接信息(<bean id="dataSource")
b.name="sql" 为验证查询语句,后面value中的查询语句,根据具体数据库中的数据表和结构而定
c.name="passwordEncoder"项在后面对密码加密处理中要使用,这里未使用,先注释掉
4.重启Tomcat,访问http://localhost:8080/cas,根据连接数据库中的数据,进行测试。
二.配置ldap认证
ldap百科:LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
关于ldap大家可以自行去深入了解和学习,这里主要是介绍下cas服务配置ladp来进行验证的步骤。
1.导入cas服务认证的ldap支持jar和spring连接ldapjar(spring-ldap,cas-server-support-ldap
), 复制D:\cas-server-3.5.2.1\modules下面cas-server-support-ldap-3.5.2.1.jar到D:\apache-tomcat-7.0.52\webapps\cas\WEB-INF\lib下。这里使用的spring-ldap是spring-ldap-1.3.1.RELEASE-all.jar版本,该jar可以去spring官网下载,或通过maven添加,把该jar也复制到\cas\WEB-INF\lib文件夹下。如果有需要jar的,可以去下载博文中的demo,demo地址将在后面补上。
2.配置ldap的连接信息。打开D:\apache-tomcat-7.0.52\webapps\cas\WEB-INF\deployerConfigContext.xml文件,在<beanid="authenticationManager"节点上面添加数据源信息:
<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="false"/>
<property name="url" value="ldap://192.168.1.102:389" />
<property name="userDn" value="cn=admin"/>
<property name="password" value="centos"/><!-- 自己openldap的密码 -->
<property name="baseEnvironmentProperties">
<map>
<entry key="com.sun.jndi.ldap.connect.timeout" value="3000" />
<entry key="com.sun.jndi.ldap.read.timeout" value="3000" />
<entry key="java.naming.security.authentication" value="simple" />
</map>
</property>
</bean>
说明:url为该ldap服务的地址
userDn为该ldap服务的管理员用户名
password为对应管理员的密码
这三项为主要配置信息,下面map中是对连接参数的一些配置
3.配置验证规则。还是在上述的cas\WEB-INF\deployerConfigContext.xml文件内,找到<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>,先注释掉该句配置,在该句平行位置下添加如下配置
<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler">
<property name="filter" value="uid=%u,ou=People,dc=supresoft,dc=com" />
<property name="contextSource" ref="contextSource" />
</bean>
说明:其中contextSource中的ref为上面配置的链接信息bean的id
filter中配置验证的ldap查询语句
4.重启Tomcat,访问http://localhost:8080/cas,根据连接数据库中的数据,进行测试。