SSO之CAS配置二——数据库和LDAP
对于CAS Server的cas.war中默认的认证Handler是SimpleTestUsernamePasswordAuthenticationHandler,该方式只要输入的用户名和密码相同就能通过验证,因此需要更改设置,常见的有数据库,xml文件,ldap方式。下面讲述数据库和ldap两种方式。
在CAS Server中webapp下的cas中配置文件deployerConfigContext.xml,把上述的简单认证注释掉,在其下面加入数据库handler,如下:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from t_admin_user where login_name=?"></property>
<!-- <property name="passwordEncoder" ref="MD5PasswordEncoder"></property> -->
</bean>
上述配置还是用到了dataSource和passwordEncoder,因此需要加入以下配置,位置只要在<beans>下就行:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url"><value>jdbc:mysql://173.39.160.72/ireg?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>root</value></property>
</bean>
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-arg index="0">
<value>MD5</value>
</constructor-arg>
</bean>
其中ireg是存储用户表t_admin_user的数据库,如果数据库中的密码没有采取MD5散列的话,就不要加入passwordEncoder属性了,就像我上面的配置。
然后再CAS Server中的webapp下cas的库加入,数据库连接驱动和包支持,mysql-connector-java-5.1.18-bin.jar和cas-server-support-jdbc-3.5.1.jar。
对于我的程序来说,访问测试web应用http://cas.client:8080/CasClient/index.jsp 然后输入数据库中的密码就可以正常查看了。
对于LDAP来讲,同样是改变deployerConfigContext.xml,加入LDAP的handler,如下:
<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
<!-- 基节点 -->
<property name="searchBase" value="ou=system" />
<property name="contextSource" ref="contextSource" />
</bean>
还要在其他位置加入contextSource的配置:
<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="password" value="secret" />
<property name="pooled" value="true" />
<property name="urls">
<list>
value>ldap://dsx.xxxxx.com/</value>
</list>
</property>
<!-- 如果是老版本,这里应该用的是userName,而不是userDn -->
<property name="userDn" value="uid=admin,ou=system" />
<property name="baseEnvironmentProperties">
<map>
<entry>
<!--none 端口 389-->
<!--ssl 端口 636-->
<key><value>java.naming.security.protocol</value></key>
<value>none</value>
</entry>
<entry>
<key><value>java.naming.security.authentication</value></key>
<value>simple</value>
</entry>
</map>
</property>
</bean>
然后在cas 库中加入cas-server-support-ldap-3.5.1.jar ,spring-ldap的jar文件,应该就可以了,因为这个例子没有测试,所以先写在这儿,测试后如果有错误会更改!