SSO之CAS單點登陸詳細搭建教程(轉)

SSO之CAS單點登陸詳細搭建教程

本教程是我我的編寫,花費幾個小時的時間,給須要學習的人員學習使用,但願能幫助到大家。html

https://www.cnblogs.com/zhoubang521/p/5200407.htmljava

 

【我的網站】:http://www.2b2b92b.com
【網站源碼】:http://git.oschina.net/zhoubang85/zb
【支付-微信_支付寶_銀聯】技術QQ羣:470414533
【技術論壇】:http://www.2b2b92b.cn
mysql

 

【環境說明】:
本文演示過程在同一個機器上的,環境以下:
git

  • windows7 64位web

  • jdk1.7.0_51sql

  • apache-tomcat-7.0.57-windows-x64數據庫

  • cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jarapache

  • 確保本地jdk環境已經搭建好windows

【軟件說明】:
涉及到的一些jar,還有cas服務的war,因爲CSDN上傳文件最大隻支持10M,但cas服務的war有20M左右。爲了方便,已經將全部須要使用到的jar和war資源,打包放在了百度雲盤,請自行下載。
瀏覽器

https://pan.baidu.com/s/1hrY4BBm

 

 

根據演示需求,用修改hosts 文件的方法添加域名最簡單方便(這個很是重要,由於CAS單點登陸系統是基於JAVA安全證書的 https 訪問, 要使用CAS單點登陸必需要配置域名, cas是不能經過ip訪問的.),編輯文件 C:\Windows\System32\drivers\etc\hosts 在文件末端添加下面三條信息:

127.0.0.1 server.zhoubang85.com 127.0.0.1 client1.zhoubang85.com 127.0.0.1 client2.zhoubang85.com
  • server.zhoubang85.com  =>> 對應部署cas server的tomcat,這個虛擬域名還用於服務端證書生成

  • client1.zhoubang85.com  =>>  對應部署client1客戶端應用的tomcat

  • client2.zhoubang85.com   =>> 對應部署client2客戶端應用的tomcat

【注意】:上面3個ip都是127.0.0.1,這是爲何呢?由於個人環境都是在同一臺機器,因此ip都是一致的,咱們再把不一樣的服務端和客戶端應用,使用不一樣域名加以區分。一個域名對應一個應用,模擬多端!

 

【因爲CAS默認是基於HTTPS協議,因此須要配置服務端的tomcat,使之支持SSL安全協議訪問】

【強烈說明】:初學者的話,建議配置成http協議訪問,節省證書配置的繁瑣步驟。

一、CAS固然也能夠設置支持http訪問,如何修改配置支持http,請自行百度,應該是修改二、3個配置文件就能夠了。.
二、若是是初學者,我建議配置成http協議訪問,由於https證書配置有很大可能性會出現問題,致使浪費不少時間精力。若是http配置完成,則直接跳到步驟——「3. 部署CAS-Server」繼續搭建便可。


【安全證書配置】:

    1. 打開cmd命令窗口

    2. 生成證書,在cmd窗口輸入如下命令:

      keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass zhoubang -validity 365 -keystore c:\zhoubang.keystore -storepass zhoubang

       

【說明】:-alias後面的別名能夠自定義,-keypass指定證書密鑰庫的密碼, -storepass和前面keypass密碼相同,不然下面tomcat 配置https 會訪問失敗 -keystore指定證書的位置,這裏指定放在c盤根目錄,密鑰庫名稱能夠自定義,這裏是zhoubang.keystore 3. 命令輸入完成,回車以後,會提示你輸入一些資料,見下圖:

【注意】:第一個讓你輸入的「您的名字與姓氏是什麼」,請必須輸入在C:\Windows\System32\drivers\etc\hosts文件中加入的服務端的域名。

我這裏也就是server.zhoubang85.com,爲什麼這麼作?

首先cas只能經過域名來訪問,不能經過ip訪問,同時上方是生成證書,因此要求比較嚴格,因此若是不這麼作的話,及時最終按照教程配置完成,cas也能夠正常訪問,訪問一個客戶端應用雖然能進入cas驗證首頁,可是,當輸入信息正確後,cas在回調轉入你想訪問的客戶端應用的時候,會出現No subject alternative names present錯誤異常信息,這個錯誤也就是在上面輸入的第一個問題答案不是域名致使、或者與hosts文件配置的不一致致使。

      4.導出證書:

    在cmd窗口繼續輸入如下命令,導出證書:

keytool -export -alias ssodemo -keystore c:\zhoubang.keystore -file c:\ssodemo.crt -storepass zhoubang

【說明】:-alias後面的名稱要與生成證書的命令裏面的alias的名稱一致. –keystore後面指定證書存放的位置,這裏我放在C盤根目錄,同時證書名稱要與【生成證書】對應的命令裏的keystore名稱一致.這裏是zhoubang.keystore,-file後面才crt路徑,我也指定在c盤根目錄. –storepass的證書密碼要與上面輸入的密碼一致.
以下圖所示:

咱們再看看c盤下面是否生成crt文件:

      5.客戶端導入證書

    在cmd窗口輸入命令:

keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo

【說明】:-file指定證書的位置,也就是上一步導出證書的位置,即c:\ ssodemo.crt 命令中指定了JAVA_HOME,意思是將證書導入到客戶端證書庫,也就是jdk證書庫中.由於客戶端應用運行在本地,須要jdk的支持。

回車以後,會讓你輸入密鑰庫口令,注意,這裏的密碼必需要輸入changeit,不能輸入上面指定的密碼zhoubang,切記,不然導入客戶端證書會有問題,若是是多臺機器演示,須要在每一臺客戶端導入該證書,步驟都是同樣的。當看到提示「是否信任此證書」,輸入y回車便可,見下圖:(說明,命令中的-alias後面的別名能夠自定義,若是出現【證書未導入,別名<***>已經存在】的錯誤,該意思是說客戶端的密鑰庫中已經存在該別名證書了,從新指定其餘別名便可.)

【注意項】:因爲是本地沒有證書,證書是本身生成的,因此,務必將生成的證書導入到jre的證書鏈中,否則是沒法支持CAS認證服務的。

 

至此,CAS所需的證書環境,已經配置好。
下面,開始咱們的CAS服務、Tomcat、以及多客戶端的配置及測試訪問。

 

  • 部署CAS-Server相關的Tomcat

    1. 配置HTTPS
      解壓apache-tomcat-7.0.57-windows-x64.zip,我本地路徑爲E:\apache-tomcat-7.0.57,編輯E:\apache-tomcat-7.0.57\conf\server.xml,找到下面片斷:  

<!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->

去掉註釋,修改爲:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:/zhoubang.keystore" keystorePass="zhoubang" clientAuth="false" sslProtocol="TLS" />

 

其中,keystoreFile就是建立證書的路徑,keystorePass就是建立證書的密碼.

      2. 驗證HTTPS配置

    其餘按照默認配置不做修改,雙擊E:\apache-tomcat-7.0.57\bin \startup.bat 啓動tomcat 驗證https是否配置成功,我本地使用火狐瀏覽器訪問,在地址欄輸入
https://server.zhoubang85.com:8443/  出現下面畫面,其實這就代表cas服務端tomcat的https配置是沒有問題了. 

點擊【我已充分了解可能的風險】,點擊出現的【添加例外】—【確認安全例外】,,將會出現下面tomcat默認首頁.tomcat已經支持https協議訪問了,一切ok!

      3. 部署CAS-Server

    CAS-Server 下載地址: http://www.jasig.org/cas/download  
    本文以cas-server-webapp-4.0.0.rar爲例,解壓提取cas-server-webapp-4.0.0.war文件,把改文件copy到E:\apache-tomcat-7.0.57\webapps 目下,並重命名爲:cas.war。

    啓動tomcat,在瀏覽器地址欄輸入:https://server.zhoubang85.com:8443/cas ,回車,出現CAS服務端的登陸驗證首頁:

首頁默認是英文的,點擊紅色框的連接,切換成中文顯示。固然,並非全部的地方都會變成中文,這個不做講解。
【說明】:此時,CAS只是單獨運行,至於登陸的用戶名和密碼是什麼,請查看:E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\deployerConfigContext.xml文件中有這樣一段配置:

複製代碼
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <map> <entry key="casuser" value="Mellon"/> </map> </property> </bean>
複製代碼

這個配置是默認靜態配置用戶名和密碼,那就在瀏覽器的CAS服務的登錄框中輸入用戶名casuser和密碼Mellon,登陸看看效果,就會出現驗證成功的頁面,以下圖。你也能夠在文件中本身配置本身的用戶名和密碼。

看到上述頁面表示CAS-Server已經部署成功。

 

用戶名和密碼確定須要和數據庫進行交互驗證的,,那麼,如何配置呢?
【說明】:我本地使用的是mysql數據庫。
一、須要將幾個jar文件,放到CAS服務的lib目錄下,我本地使用的jar版本分別是c3p0-0.9.1.2.jar、cas-server-support-jdbc-4.0.0.jar、mysql-connector-java-5.1.13-bin.jar,這3個缺一不可。將這3個jar放到E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\lib目錄下。
二、修改配置,支持mysql數據庫交互驗證
編輯E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\ deployerConfigContext.xml文件,你會看到有這樣一段配置:

註釋掉第二個entry配置,最終配置以下:

複製代碼
<constructor-arg> <map> <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" /> <!-- 註釋這個--> <!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />--> <!-- key-ref指定本身的本地數據庫訪問 --> <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/> </map> </constructor-arg>
複製代碼

上述配置截圖:

而後再在這個xml中新加入2個bean配置,以下:

按 Ctrl+C 複製代碼
按 Ctrl+C 複製代碼

要說明的是,紅色標註的內容,我想你們都能看的明白,就是指定數據庫驅動和鏈接信息。其中,sql語句的意思就是,根據用戶名獲取密碼,CAS會根據你頁面輸入的用戶名獲取該用戶密碼,和你輸入的密碼進行校驗,來判斷輸入是否正確。

其中,sql中的表換成你本身本地的表便可,或者本身手動新建一個表,加入幾條測試數據便可。只要根據用戶名查詢密碼便可。
上述配置截圖:

至此,CAS與數據庫交互驗證的配置已經配置完成,你能夠從新訪問cas,輸入數據庫中存在的用戶名和密碼,來看看效果如何~若是登陸成功,說明配置無誤。不然,請耐心檢查配置是否有問題,jar包是否缺乏。


如今,CAS已經支持數據庫交互驗證了,服務端tomcat也支持HTTPS協議訪問,如今,咱們來搭建客戶端,實現多個客戶端的單點登陸。這裏,我本地只使用2個tomcat客戶端來測試,其實已經知足單點登陸的要求了,至少2個應用。

      4. 部署CAS客戶端相關的Tomcat

首先,客戶端應用是要和CAS服務端進行交互的,因此這裏須要jar文件,放在客戶端應用的lib目錄下。分別是:cas-client-core-3.2.1.jar、commons-logging.jar

這裏呢,我就直接使用tomcat默認自帶的 webapps\examples 做爲演示的簡單web項目。我就不去另寫一個web測試的demo了。
既然須要2個客戶端應用,則須要2個tomcat作爲客戶端服務器,因此,我本地解壓了2份tomcat,做爲客戶端服務器,並從新命名,本地路徑分別爲:E:\apache-tomcat-7.0.57-client1和E:\apache-tomcat-7.0.57-client2

首先,將上面2個jar分別放到E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\lib目錄
和E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\lib目錄。

  • 配置apache-tomcat-7.0.57-client1客戶端1:

    修改tomcat的啓動端口:
    編輯E:\apache-tomcat-7.0.57-client1\conf\server.xml文件,找到以下2處內容:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

這裏請將port="8080"修改爲其餘4位端口,不能和CAS服務端的tomcat相同,不然,在同一臺機器上測試會出現端口占用的錯誤,我修改爲18080,若是是在不一樣的機器上,則不須要配置這些。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

這裏請將port="8009"修改爲其餘4位端口,不能和CAS服務端相同.我修改爲18009

好,啓動這個tomcat,即運行E:\apache-tomcat-7.0.57-client1\bin\startup.bat,若是啓動窗口中沒有出現錯誤,說明端口配置無誤。請記住你配置的端口號。

瀏覽器輸入 http://client1.zhoubang85.com:18080/examples/servlets/,請注意紅色部分域名,就是教程一開始須要配置的C:\Windows\System32\drivers\etc\hosts的域名,用於不一樣的客戶端域名訪問,回車:

好,啓動這個tomcat,即運行E:\apache-tomcat-7.0.57-client1\bin\startup.bat ,若是啓動窗口中沒有出現錯誤,說明端口配置無誤。請記住你配置的端口號。

瀏覽器輸入 http://client1.zhoubang85.com:18080/examples/servlets/,  請注意紅色部分域名,就是教程一開始須要配置的 C:\Windows\System32\drivers\etc\hosts 的域名,用於不一樣的客戶端域名訪問,回車:

看到上述界面表示apache-tomcat-7.0.57-client1的基本安裝配置已經成功。
接下來須要配置最重要的內容,讓客戶端應用和CAS服務鏈接:
編輯E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\web.xml,在最下面加入以下配置:

複製代碼
<!-- 用於單點退出,該過濾器用於實現單點登出功能,可選配置--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- 該過濾器用於實現單點登出功能,可選配置 --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CAS Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://server.zhoubang85.com:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client1.zhoubang85.com:18080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責對Ticket的校驗工做,必須啓用它 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://server.zhoubang85.com:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client1.zhoubang85.com:18080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責實現HttpServletRequest請求的包裹,好比容許開發者經過HttpServletRequest的getRemoteUser()方法得到SSO登陸用戶的登陸名,可選配置。 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器使得開發者能夠經過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登陸名。好比AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
複製代碼

配置完成後,啓動CAS服務端tomcat,再啓動該客戶端1的tomcat,在瀏覽器訪問:
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
看看是否跳轉到了CAS認證界面,回車以後,會出現以下圖:

認證觀察會發現瀏覽器的地址欄中(我用的是火狐瀏覽器),URL信息是這樣的:

https://server.zhoubang85.com:8443/cas/login?service=http%3A%2F%2Fclient1.zhoubang85.com%3A18080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample

我想你已經知道什麼意思了,因爲你沒有登陸CAS認證系統,CAS認證系統攔截到你訪問的客戶端應用,首先進入到認證系統登陸界面,同時URL後面加上你想訪問的地址信息,當你登陸成功後,CAS服務會轉向到你剛剛訪問的地址,也就是:

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample

轉向到這個地址以後,瀏覽器會顯示以下內容:

上面這個內容,顯示的就是你訪問tomcat中的examples項目的一個servlet的返回結果。
這裏,若是你夠細心的話,你會發現瀏覽器地址欄又多了一個內容,即多了一個jsessionid參數,這個就是CAS認證的原理所在,使用的是COOKIE機制。這裏就很少說了。

  • 配置apache-tomcat-7.0.57-client2客戶端2

    配置與上面的客戶端配置步驟相同,其中須要注意的就是,這第二個客戶端的tomcat端口要與上面的客戶端和CAS服務端的端口要不同,不然出現端口占用的錯誤。
    主要配置以下:

    Port修改爲28080

 

    Port修改爲28009

 

    修改編輯E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\web.xml文件,加入的內容就是上面在第一個客戶端的web.xml內容一致,只不過須要修改2處內容,就是幾個url地址, 最終的配置以下:

複製代碼
<!-- 用於單點退出,該過濾器用於實現單點登出功能,可選配置--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- 該過濾器用於實現單點登出功能,可選配置 --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CAS Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://server.zhoubang85.com:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client2.zhoubang85.com:28080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責對Ticket的校驗工做,必須啓用它 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://server.zhoubang85.com:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client2.zhoubang85.com:28080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責實現HttpServletRequest請求的包裹,好比容許開發者經過HttpServletRequest的getRemoteUser()方法得到SSO登陸用戶的登陸名,可選配置。 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器使得開發者能夠經過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登陸名。好比AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
複製代碼
  • 測試驗證SSO

    至此,2個客戶端也已經配置完畢,啓動配置好的三個tomcat分別爲:CAS服務端tomcat、2個客戶端tomcat
    我本地路徑分別爲:
        服務端tomcat:E:\apache-tomcat-7.0.57
        客戶端1:E:\apache-tomcat-7.0.57-client1
        客戶端2:E:\apache-tomcat-7.0.57-client2

  • 基本的測試

    訪問客戶端1—-> 跳轉到cas server 驗證 —-> 顯示客戶端1的應用 —->新開選項卡訪問客戶端2 —-> 顯示客戶端2應用 —-> 註銷cas server —-> 打開客戶端1/客戶端2 —-> 從新跳轉到cas server 驗證.

 

下面截圖,根據上面所示進行測試,看看是否與上面說的流程一致:
首先,打開火狐瀏覽器,地址欄輸入:

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample

回車,將會出現CAS認證界面:

輸入用戶名和密碼,登陸成功後,顯示的界面:

從新打開一個選項卡,地址欄輸入:

http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample

回車,將直接顯示客戶端2界面,沒有從新登陸,瀏覽器顯示界面:

根據上面顯示的界面,按照普通想邏輯,當訪問客戶端2的時候,應該會被CAS攔截,轉到CAS認證服務的界面,可是結果卻直接顯示客戶端2的界面,緣由就是由於你在訪問客戶端1的時候已經登陸認證過了,CAS會在你瀏覽器中注入COOKIE,記錄你的認證憑證,若是你的瀏覽器沒有關閉或者退出的話,當你訪問客戶端2應用的時候,CAS檢測到認證的憑證,因此,就直接顯示了客戶端2的界面,大概的認證處理流程就是這樣了,我這裏說的比較淺顯,其實CAS仍是有不少更加複雜的操做在裏面的,有興趣的朋友本身慢慢研究吧。

 

這裏,其實就已經說明,CAS單點登陸系統已經搭建完畢!運行一切正常!

下面,咱們新打開一個選項卡(也可在當前頁面的地址欄輸入),在瀏覽器地址欄中輸入

https://server.zhoubang85.com:8443/cas/logout

回車顯示:

上述表示 認證註銷成功,此時若是再訪問 : 

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample

http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample

都將會跳轉到CAS服務從新進行認證。

 

異常錯誤總結】:

一、若是中途出現瞭如下異常錯誤:sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

緣由分析:其實緣由就是,你在上面的第5步進行證書導入到jre證書鏈的時候(具體命令以下:keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo),ssodemo.crt路徑不對致使,檢查下下c:\ssodemo.crt否有空格,或者回想下是否執行了這個步驟。

 

到此,SSO之CAS單點登陸系統已經搭建完畢!
這裏我借鑑一篇文章,提供你們學習:
http://www.micmiu.com/enterprise-app/sso/sso-cas-sample/

固然,CAS認證以後,至於在後臺如何獲取到登陸的用戶信息,這裏我就不做描述了。上面分享的文章最後有相應的講解。其餘的知識,本身慢慢學習和研究吧。

歡迎訪問 JAVA技術分享 www.2b2b92b.com
相關文章
相關標籤/搜索