天天看點

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

<a href="http://blog.csdn.net/alonesword/article/details/9564769">第一部分:安裝配置 Tomcat</a>

<a href="http://blog.csdn.net/alonesword/article/details/9564777">第二部分:安裝配置 CAS</a>

<a href="http://blog.csdn.net/alonesword/article/details/9564787">第三部分:實作 ASP.NET WebForm Client</a>

<a href="http://blog.csdn.net/alonesword/article/details/9564811">第四部分:實作基于資料庫的身份驗證</a>

<a href="http://blog.csdn.net/alonesword/article/details/9564821">第五部分:擴充基于資料庫的身份驗證</a>

<a href="http://blog.csdn.net/alonesword/article/details/9564833">第六部分:自定義登入頁面</a>

1. 應用場景

前面提到的基于資料庫的集中身份驗證主要是通過使用者名、密碼的方式完成驗證操作,然而在實際使用過程中,使用者可能需要多種形式的認證手段,除了使用者名密碼的方式外,還可能通過郵箱或手機号登入,但不管使用何種方式登入,都對應同一使用者。下圖示範了淘寶網在登入時允許使用者以“手機号/會員名/郵箱”三種方式登入系統。

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

2. 資料庫設計

針對上述需求,重新設計資料庫字段,如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

輸入測試用資料,如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

3. 自定義資料庫驗證Handler

說明:大家可以從解壓縮的“cas-server-3.5.1\cas-server-support-jdbc\src”檔案夾下找到“QueryDatabaseAuthenticationHandler.java”的源代碼以及其它相關源碼供參考。

(1)安裝Eclipse。Eclipse是非常常用的一種Java編輯器。為了完成元件編寫,我們首先需要安裝Eclipse。Eclipse的下載下傳與安裝非常簡單,在這裡就不再贅述。

(2)啟動Eclipse,選擇“File/New/Java Project”,打開建立項目對話框,在“Project Name”文本框中輸入“MultiCriteriaQueryDatabaseAuthenticationHandler”,單擊“Finish”按鈕。如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(3)在“Package Explorer”中右擊項目“MultiCriteriaQueryDatabaseAuthenticationHandler”,選擇“New/Folder”,在彈出的對話框中輸入“lib”并單擊“Finishe”按鈕。

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證
Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(4)從解壓縮的“cas-server-3.5.1\modules”檔案夾中找到“cas-server-core-3.5.1.jar”與“cas-server-support-jdbc-3.5.1.jar”兩個檔案,将其拷貝到建立的“lib”檔案夾下。

(5)從網上搜尋并下載下傳“spring.jar”與“javax.validation-1.0.0.GA.jar”兩個檔案,也将其拷貝到建立的“lib”檔案夾。重新整理後的項目如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(6)在“Package Explorer”中右擊項目“MultiCriteriaQueryDatabaseAuthenticationHandler”,選擇“Build Path/Add External Archives...”,依次将剛才拷貝到lib檔案夾下的四個jar檔案添加至項目的“Reference Libraries”中。完成後的界面如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證
Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(7)在“src”檔案夾上右擊,選擇“New/Class”,彈出建立Java類對話框。在Package文本框中輸入“org.jasig.cas.adaptors.jdbc”,在Name文本框中輸入“MultiCriteriaQueryDatabaseAuthenticationHandler”,單擊“Finish”按鈕。

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(8)用下面的代碼替換“MultiCriteriaQueryDatabaseAuthenticationHandler.java”檔案中的現有代碼,單擊儲存按鈕儲存修改。

<a></a>

(9)在“Package Explorer”中右擊項目“MultiCriteriaQueryDatabaseAuthenticationHandler”,選擇“Export...”打開Export對話框。

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(10)在“Export”對話框中選擇“JAR file”,單擊“Next”按鈕。

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(11)在JAR檔案設定對話框中,去掉“lib”檔案夾前面的對勾,同時去掉“.classpath”和“.project”前面的對勾,選擇JAR檔案的儲存路徑到桌面,單擊“Finish”按鈕。如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(12)将桌面上生成的“MultiCriteriaQueryDatabaseAuthenticationHandler.jar”檔案拷貝至“%TOMCAT_HOME%\webapps\cas\WEB-INF\lib”檔案夾下。

(13)以管理者身份啟動文本編輯器,打開“%TOMCAT_HOME%\webapps\cas\WEB-INF\deployerConfigContext.xml”。找到下面的代碼(這段代碼是上篇博文中我們添加進去的):

(14)将上面這段代碼注釋掉,并在其下插入如下配置資訊并儲存:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

(15)重新啟動Tomcat服務。

4.測試自定義資料庫身份驗證Handler

登入後的使用者界面如下圖所示:

Yale CAS + .net Client 實作 SSO(5)--擴充基于資料庫的身份驗證

待續...