CAS數據庫查詢認證(xml配置)

上篇博客介紹的CASDemo,登錄界面用戶名、密碼並沒有通過數據庫查詢認證。本博客,將介紹如何通過xml配置,進行CAS登錄數據庫查詢認證。

所需數據庫sso_cas,庫中的表:tb_user,表中字段:Idusernamepassword


 


數據庫查詢認證(通過xml配置)

1,修改cas服務端配置


tomcatwebapps/cas/WEB_INF/deployerConfigContext.xml 文件做如下修改:

 

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

 

修改爲:

<beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

        <propertyname="dataSource" ref="dataSource" ></property>

        <propertyname="sql" value="select password from tb_user whereusername=?" ></property>

     </property>

</bean>

 

添加datasource bean的定義:

<beanid="dataSource"

        class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <propertyname="driverClassName" value="com.mysql.jdbc.Driver" />

        <propertyname="url" value="jdbc:mysql://localhost/sso_cas" />

        <propertyname="username" value="root" />

        <propertyname="password" value="root" />

</bean>

 

注意

1,QueryDatabaseAuthenticationHandlercas-server-support-jdbc提供的查詢接口其中一個是通過配置一個 SQL 語句查出密碼,與所給密碼匹配;

2,sql語句:select password from tb_user whereusername=?根據用戶名username 查詢表tb_user中密碼password字段,CAS會匹配用戶輸入的密碼,如果匹配則通過;

 

注:可配置多個數據庫 

如果需要配置多個數據庫,可以配置多個QueryDatabaseAuthenticationHandler和多個datasource

假如a_user中有一個用戶:auserb_user中有一個用戶buser,這樣你無論用哪一個用戶登錄,CAS就會先查a_user,如果用戶名密碼都正確,那麼就通過,如果a_user中驗證失敗,那麼CAS就會再查b_user,用戶名密碼都正確就算通過了,此時不正確,就算這次登錄驗證沒通過。 

添加相關的jar

需要在web項目的lib下添加兩個包:cas-server-support-jdbc-x.x.x.jar  mysql-connector-java-x.x.x-bin.jar(具體版本號根據情況而定)

 

按如下配置好後,進入CAS登錄頁,用戶名密碼需要通過查詢數據庫來認證,輸入用戶名admin,密碼123,纔可登錄成功;如果輸入用戶名admin,密碼admin是不能登錄成功。

 


 

 

 

發佈了196 篇原創文章 · 獲贊 110 · 訪問量 98萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章