1. 程式人生 > >CAS單點登入(4):cas-4.0.0-server 配置mysql資料庫查詢認證

CAS單點登入(4):cas-4.0.0-server 配置mysql資料庫查詢認證

目錄

概述

之前使用者名稱和密碼的驗證是通過配置檔案寫死的,實際開發過程中需要採用資料庫查詢認證機制,此處使用mysql

環境要求

  • cas-4.0.0-server
  • mysql-5.7
  • tomcat-8
  • jdk-8

建立資料庫

# 建立測試資料庫
CREATE DATABASE cas;

USE cas;

# 建立測試表
CREATE TABLE `cas_t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT
CHARSET=utf8;
# 插入兩條測試使用者資料 INSERT INTO `cas_t_user` VALUES (1,'admin','96e79218965eb72c92a549dd5a330112'); INSERT INTO `cas_t_user` VALUES (2,'user','96e79218965eb72c92a549dd5a330112');

Tips

  • 其中使用者的密碼為MD5之後的值
  • “111111”的MD5值為:“96e79218965eb72c92a549dd5a330112”

配置cas-server

  • 修改%tomcat_home%/webapps/cas/WEB_INF/deployerConfigContext.xml

配置dataSource

// 新增以下bean 資料庫使用者名稱密碼按自己的配置
<!-- 新增資料來源 -->
  <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/test" />
    <property name="username" value="root" />
    <property name="password" value="123456" />
  </bean>

配置passwordEncoder

// 配置cas自帶的MD5加密器
<!-- 配置passwordEncoder -->
  <bean id="MD5PasswordEncoder"
    class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
    <constructor-arg index="0" value="MD5" />
  </bean>

配置資料庫驗證bean

// 1. 找到 <bean id="primaryAuthenticationHandler" .../>
// 2. 註釋掉這個bean配置
// 3. 接著新增資料庫驗證配置

<!-- 配置認證類 -->
  <bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
    <!--dataSource指向上面配置的dataSource bean-->
    <property name="dataSource" ref="dataSource" ></property>
    <property name="sql" value="select password from sso_t_user where login_name=?" ></property>
    <!--passwordEncoder 指向上面配置的 passwordEncoder bean-->
    <property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>
  </bean>

修改authenticationManager

// 1. 找到以下bean
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">

// 2. 將其中下面這個entry註釋
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />

// 3. 新增下面這個entry
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />

修改的配置圖

這裡寫圖片描述
這裡寫圖片描述

新增相關jar包

  • 目錄:apache-tomcat-8.0.52\webapps\cas\WEB-INF\lib
  • 在上面目錄下新增以下兩個jar包
    1. cas-server-support-jdbc-4.0.0.jar
    2. mysql-connector-java-5.x.x-bin.jar

Tips:

  • 第一個jar可以在cas-server-4.0.0\modules下拷貝
  • 第二個jar可以在mysql安裝目錄下拷貝

啟動測試