Cas單點登錄的服務器端和客戶端的配置

Cas服務器端和客戶端的配置

服務器端的配置:

1. 所需的環境:

· Tomcat7.2

· JDK6

· CAS Service 版本    cas-server-3.4.8-release

· CAS Client版本      cas-client-3.2.1-release  

2. 用JDK自帶的keytool生成證書

cmd環境下輸入:

keytool -genkey -alias  smalllove -keyalg RSA -keystore D:/keys/smallkey

  此命令是生成一個證書,其中smalllove是證書別名(我配的是項目的名稱)先在d盤下新建一個keys的文件夾

 

3. 導出證書

C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey

4. 把證書導入到客戶端JDK中。

keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove

 

到此證書導入成功。

          注意:在此步有可能出現如下錯誤

     C:\>keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove

              輸入keystore密碼:

keytool錯誤: java.io.IOException: Keystore was tampered with, or password was incorrect

 本次錯誤的解決方法是,把%JAVA_HOME%\lib\security下的cacerts文件刪除掉,在執行。

 

5. 把cas.war文件拷貝的%TOMCAT_HOME%\webapp下

6. 修改server.xml

7. 以上配置完成訪問http://yourhost:8443/cas出現一下頁面

出現

證明服務器配置成功

==============================================================================================

客戶端配置:

  把一下代碼考到項目的pom.xml中

<dependency>
            <groupId>org.jasig.cas.client</groupId>
            <artifactId>cas-client-core</artifactId>
            <version>3.2.1</version>
    </dependency>

在客戶端項目的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>CASFilter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://www.travel.com:8443/cas/login</param-value>
            <!--這裏的server是服務端的IP -->
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://www.travel.com:8080</param-value></init-param>
    </filter>
    <filter-mapping>
        <filter-name>CASFilter</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://www.travel.com:8443/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://www.travel.com:8080</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>

    <!-- ======================== 單點登錄結束 ======================== -->
複製代碼

 

常見問題說明:

 

 錯誤一、

                       

 

         若出現以上錯原因是:你在客戶端的web.xml①,②的配置有誤。

 錯誤二、     

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 

unable to find valid certification path to requested target

   若出現次錯誤是有與你客戶端的證書有問題。重新導入你證書。

  注意:

 

拷到web.xml裏的必須這個,其餘的看情況

第一個地址是服務端的地址

第二地址的本機地址,都採用ip格式 

建立服務端與客戶端的連接 

cmd下編譯InstallCert.java(javacInstallCert.java)

java InstallCert服務器端的ip地址:8443 + 客戶機端的密碼

運行成功則建立連接,便可重新啓動本機服務,訪問地址(注意:在做本步操作時,要注意cmd中執行語句的所在位置,要保證當前所在位置之後只有一個jre文件夾,否則將會出現NodefFoundError)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章