配置單點登錄


配置CAS基本步驟:

1、使用java自帶keytool創建本地密鑰庫

2、將創建過的證書導入到java證書庫

3、在tomcat配置文件中配置https證書訪問

4、導入cas-server到eclipse

5、創建並配置cas-client

完成

 

下面開始逐步介紹:

1、使用java自帶keytool創建本地密鑰庫

創建本地密鑰庫命令:
keytool -genkey -alias testkey -keyalg RSA -keystore "C:\Program Files\Java\Testkey"

-alias : 這里的testkey是別名,根據個人自定義

-keystore  :這里是聲明生成key的位置(稍后會用到)

輸入上述命令后,會讓你輸入密鑰庫口令(記住密碼)

確認密碼之后,會讓你輸入一些證書信息(注意:紅框這里一定要輸入你的域名)如何創建域名請看此文章

把密鑰庫導出成證書文件,輸入命令:

keytool -export -file "C:\Program Files\Java\testkey.crt" -alias testkey -keystore "C:\Program Files\Java\Testkey"

-file:定義輸出文件的路徑和名稱

-alias:證書的別名(之前定義的)

-keystore:密鑰庫的存儲路徑

2、將創建過的證書導入到java證書庫

把上面的證書導入到客戶端JDK密鑰庫中(JDK證書密鑰庫默認密碼:changeit):

keytool -import -keystore "C:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts" -file "C:\Program Files\Java\testkey.crt" -alias testkey

 

 

3、在tomcat配置文件中配置https證書訪問

 

在你tomcat安裝路徑conf目錄下,修改server.xml配置文件中添加如下配置:

 

[html] view plain copy
 
 
print?
  1. <Connector SSLEnabled="true" clientAuth="false"   
  2.      keystoreFile="C:/Program Files/Java/Testkey" keystorePass="testkey"   
  3.      maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol"   
  4.      scheme="https" secure="true" sslProtocol="TLS"/>  
 <Connector SSLEnabled="true" clientAuth="false" 
		 keystoreFile="C:/Program Files/Java/Testkey" keystorePass="testkey" 
		 maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" 
		 scheme="https" secure="true" sslProtocol="TLS"/>

 

keystoreFile:剛剛創建的密鑰庫路徑

keystorePass : 密鑰庫口令



 

4、導入cas-server到eclipse

下載cas-server的zip包,解壓后在modules目錄下可以找到  cas-server-webapp-3.4.10.war 

導入到eclipse中,改名為cas-server

啟動tomcat,測試一下訪問cas-server(在你第一次訪問的時候會出現一個攔截頁面,這是你只需要選擇繼續訪問即可)

輸入相同的帳號密碼即可,因為默認的cas校驗是允許帳號密碼相同的登錄成功

 

5、創建並配置cas-client

創建一個web project

在index.jsp中隨便寫點什么

修改web.xml

 

[html] view plain copy
 
 
print?
  1. <!-- ======================== 單點登錄開始 ======================== -->    
  2.     <!-- 用於單點退出,該過濾器用於實現單點登出功能,可選配置 -->    
  3.     <listener>    
  4.         <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>    
  5.     </listener>    
  6.       
  7.     <!-- 該過濾器用於實現單點登出功能,可選配置。 -->    
  8.     <filter>    
  9.         <filter-name>CAS Single Sign Out Filter</filter-name>    
  10.         <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>    
  11.     </filter>    
  12.     <filter-mapping>    
  13.         <filter-name>CAS Single Sign Out Filter</filter-name>    
  14.         <url-pattern>/*</url-pattern>    
  15.     </filter-mapping>    
  16.     
  17.     <!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->    
  18.     <filter>    
  19.         <filter-name>CAS Validation Filter</filter-name>    
  20.         <filter-class>    
  21.             org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>    
  22.         <init-param>    
  23.             <param-name>casServerUrlPrefix</param-name>    
  24.             <param-value>https://diyagea.com:8443/cas-server</param-value>    
  25.         </init-param>    
  26.         <init-param>    
  27.             <param-name>serverName</param-name>    
  28.             <param-value>http://diyagea.com:8080/</param-value>  
  29.         </init-param>    
  30.     </filter>    
  31.     <filter-mapping>    
  32.         <filter-name>CAS Validation Filter</filter-name>    
  33.         <url-pattern>/*</url-pattern>    
  34.     </filter-mapping>    
  35.      
  36.    <!-- 該過濾器負責用戶的認證工作,必須啟用它 -->    
  37.     <filter>    
  38.         <filter-name>CASFilter</filter-name>    
  39.         <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>    
  40.         <init-param>    
  41.             <param-name>casServerLoginUrl</param-name>    
  42.             <param-value>https://diyagea.com:8443/cas-server/login</param-value>    
  43.             <!--這里的server是服務端的IP -->    
  44.         </init-param>    
  45.         <init-param>    
  46.             <param-name>serverName</param-name>    
  47.             <param-value>http://diyagea.com:8080/</param-value>  
  48.         </init-param>    
  49.     </filter>    
  50.     <filter-mapping>    
  51.         <filter-name>CASFilter</filter-name>    
  52.         <url-pattern>/*</url-pattern>    
  53.     </filter-mapping>    
  54.       
  55.     <!-- 該過濾器負責實現HttpServletRequest請求的包裹, 比如允許開發者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。 -->    
  56.     <filter>    
  57.         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>    
  58.         <filter-class>    
  59.             org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>    
  60.     </filter>    
  61.     <filter-mapping>    
  62.         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>    
  63.         <url-pattern>/*</url-pattern>    
  64.     </filter-mapping>    
  65.     
  66.     <!-- 該過濾器使得開發者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->    
  67.     <filter>    
  68.         <filter-name>CAS Assertion Thread Local Filter</filter-name>    
  69.         <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>    
  70.     </filter>    
  71.     <filter-mapping>    
  72.         <filter-name>CAS Assertion Thread Local Filter</filter-name>    
  73.         <url-pattern>/*</url-pattern>    
  74.     </filter-mapping>    
  75.     
  76.     <!-- ======================== 單點登錄結束 ======================== -->    
<!-- ======================== 單點登錄開始 ======================== -->  
    <!-- 用於單點退出,該過濾器用於實現單點登出功能,可選配置 -->  
    <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>  
  
    <!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->  
    <filter>  
        <filter-name>CAS Validation Filter</filter-name>  
        <filter-class>  
            org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
        <init-param>  
            <param-name>casServerUrlPrefix</param-name>  
            <param-value>https://diyagea.com:8443/cas-server</param-value>  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://diyagea.com:8080/</param-value>
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Validation Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
   
   <!-- 該過濾器負責用戶的認證工作,必須啟用它 -->  
    <filter>  
        <filter-name>CASFilter</filter-name>  
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
        <init-param>  
            <param-name>casServerLoginUrl</param-name>  
            <param-value>https://diyagea.com:8443/cas-server/login</param-value>  
            <!--這里的server是服務端的IP -->  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://diyagea.com:8080/</param-value>
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CASFilter</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>  
  
    <!-- ======================== 單點登錄結束 ======================== -->  


好了現在,copy一下,復制出另一個web project,修改一下index.jsp中內容,做一下對比

 

 

 

現在重啟tomcat可以訪問client的web project了

 

這時 訪問你的web project路徑時,會自動跳轉到剛才的頁面

 

登錄成功后:

這個時候在輸入第二個web project,已經不需要認證了,直接可以訪問到index.jsp

 

 

 

 

 

好了,現在已經配置成功了,之后我會發出使用數據庫認證方式,這樣就可以應用到我的項目中去了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM