日期:2014-05-16  浏览次数:20549 次

CAS3.5 单点登录 整合数据库认证

准备工作

Tomcat6.0.29

JDK6

CAS Server版本:cas-server-3.5

CAS Client版本:cas-client-3.1.12

 

将cas-server-support-jdbc-3.5.1.jar 包拷贝到cas项目的lib目录下。

 

一、配置数据源

在WEB-INF/deployerConfigContext.xml最后位置加入

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
    <property name="url"><value>jdbc:sqlserver://192.168.1.21:1433;DatabaseName=lzfw</value></property>
    <property name="username"><value>sa</value></property>
    <property name="password"><value>sa123456</value></property>
  </bean>

 

二、在WEB-INF/deployerConfigContext.xml 下将cas默认认证方式去掉

<bean
     class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

 

三、在<property name="authenticationHandlers"> <list></list><property>中将加入

<bean
     class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
     <property name="dataSource" ref="dataSource" />
     <property name="sql"
      value="select loginName from sys_user where id = ?" />
     <property name="passwordEncoder" ref="MD5PasswordEncoder" />
    </bean>

配置解释

select loginName from sys_user where id = ? 查询数据库的sql语句, 通过用户名登录,则通过登录用户名查询登录密码,将密码与登录密码进行匹配登录是否成功.

cas-server-support-jdbc-3.5.1包中的QueryDatabaseAuthenticationHandler.java类是通过用户名查询数据库密码与登录密码进行匹配的实现类.

ref=“MD5PasswordEncoder” 为加密算法类,如果数据库中的密码加密的,可定义一个加密类。

  <bean id="MD5PasswordEncoder" class="org.cxg.util.MyPasswordEncoder" />