cas的客戶端搭建

打開用來安裝CAS客戶端應用的名爲C1的機器,客戶端是相對CAS服務器而言的, 在C1機器上要確保安裝好1.5以上版本的JDK,我們這裏安裝的是1.5版本的JDK。在C1機器上的D盤新建一個名爲cas-client的目錄,將我們下載的Tomcat解壓放在該目錄下。

在C1機器上通過地址https://server ip:port/ cas-server-webapp/瀏覽訪問安裝在服務器上的cas-server-webapp應用,可以看到CAS服務器應用的登錄界面,如果當前在當前在CAS服務器機器上的服務器證書不是由可信任的第三方機構頒發,那麼我們在瀏覽時會看到如下圖所示"證書錯誤"的警告提示。(我用的IE瀏覽器導出服務器的證書到客戶端C1)

點擊這個瀏覽器地址欄上這個"證書錯誤"區域(如上圖所示的紅色方框標識區域),彈出如下圖所示的窗口。

點擊窗口下方的"查看證書"鏈接(如上圖所示),彈出如下圖所示窗口。

點擊彈出窗口當中的"證書信息"標籤頁,可以看到當前在CAS服務器上安裝的服務器證書信息。

點擊下方的"複製到文件(C)..."按鈕,通過彈出的窗口嚮導,全部採用嚮導中的默認值將當前服務器證書導出的C1機器本地,這裏我們將其存放在C1機器的d:\cas-client目錄下,導出的證書文件名爲server.cer。

通過以上動作,我們已經將位於CAS服務器端證書下載到C1機器上,因爲要在C1機器上安裝CAS客戶端應用,這個客戶端應用要使用CAS服務器進行認證登錄,所以就需要建立C1對CAS服務器端的信任關係,建立信任關係的方法比較簡單,就是將CAS服務器端上下載的證書導入到C1機器的JDK當中即可。

打開C1機器上的doc字符界面,切換到與當前JAVA_HOME環境變量對應的JDK目錄的bin目錄下,利用keytool工具執行下面的命令。

keytool -import-trustcacerts -alias tomcat -file d:\cas-client\server.cer -keystore cacerts -storepass changeit

這個命令比較簡單,就是將當前位於d:\cas-client目錄下的server.cer證書文件導入到一個名爲cacerts的文件當中,這裏我們沒有指定存儲cacerts文件路徑,默認它將在當前JDK的bin目錄下創建。

 執行這個命令,在提示地方輸入"y"即完成cacerts文件的創建工作,接下來需要將這個創建在bin目錄下的cacerts文件移動到當前JDK目錄下的jre/lib/security目錄下(一定要是JDK目錄下的JRE目錄,而不能是與JDK平級的JRE目錄),如果security目錄下有cacerts文件,將其覆蓋即可。

 工作做到這裏,CAS服務器與客戶端的配置就全部完成了。接下來我們就來在客戶端C1機器上的Tomcat當中部署一個簡單的Java Web應用,測試一下在訪問這個web應用時如何跳轉到CAS服務器進行登錄驗證,驗證成功後又如何跳轉回我們的這個測試web應用的。

測試CAS客戶端

打開C1機器上的d:\cas-client目錄下的Tomcat目錄,這裏爲簡單起見,我們使用Tomcat當中的docs應用爲要進行測試的客戶端Java web應用。轉到Tomcat下的webapps/docs/WEB-INF目錄下的web.xml文件,在其中添加如下配置信息。

<context-param>
    <param-name>serverName</param-name>
    <param-value>http://localhost:8080</param-value>
</context-param>
<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>
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>https://s1:8443/cas/login</param-value>
    </init-param>
</filter>
<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://s1:8443</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<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 Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


這裏配置注意的是將這裏關於CAS服務器地址要修改成你自己的使用的服務地址(服務器名或域名),我們這裏是"S1",保存修改後的web.xml文件,下載的CAS客戶端發行包,解壓後找到其中的modules目錄下的cas-client-core-3.2.0.jar與commons-logging-1.1.jar文件,將這兩個jar文件複製到C1機器的d:\cas-client中Tomcat目錄下的webapps/docs/WEB-INF/lib目錄下即可。

運行C1上的Tomcat,打開瀏覽器嘗試訪問地址:http://localhost:8080/docs,可以看到瀏覽器會自動將頁面重定向到https://s1:8443/cas/login,要求我們登錄,登錄成功後瀏覽器又會自動重定向回到原來我們要訪問的http://localhost:8080/docs,如果您看到的與這裏描述一致就表示您的配置成功了。

當然大家可以再搭建另外一個Tomcat應用進行測試,受信任的各個應用只要一處登錄,其它地方就直接可以免登錄。

預期流程: 打開app1 url —-> 跳轉cas server 驗證 —-> 顯示app1的應用 —-> 打開app2 url —-> 顯示app2應用 —-> 註銷cas server —-> 打開app1/app2 url —-> 重新跳轉到cas server 驗證.

Any question, you can call me.

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