輕松搭建CAS 5.x系列(4)-Java客戶端程序接入CAS單點登錄,Hello World版


概述說明


按照本系列的前3篇文章描述的步驟,我們已經搭建好cas sso server。那應用程序怎么接入到實現sso呢? (如果您還沒有搭建cas server,可以到《輕松搭建CAS 5.x系列文章》按照步驟) CAS官方支持了JAVA、.NET和PHP客戶端程序接入支持,其他語言如Python,可以找找非官方的支持。 本章節是編寫最簡單版本的Java的客戶端接入。

操作步驟


 

進入正題

·1. 首先啟動tomcat,看下之前搭建的cas server啟動是否正常

雙擊D:\casoverlay\apache-tomcat-8.5.31\bin\startup.bat 訪問 https://cas.example.org:8443/cas/login

 

2.編寫一個war程序cas-client-demo

項目的目錄結構件下圖

 

 

·3. cas-client-demo添加項目依賴jar包

從cas server的項目lib目錄中(D:\casoverlay\apache-tomcat-8.5.31\webapps\cas\WEB-INF\lib)

直接copy如下文件到D:\casoverlay\apache-tomcat-8.5.31\webapps\cas-client-demo\WEB-INF\lib

cas-client-core-3.4.1.jar commons-logging-1.2.jar log4j-api-2.8.2.jar log4j-slf4j-impl-2.8.2.jar slf4j-api-1.7.25.jar

 

·4. cas-client-demo的web.xml

新增文件D:\casoverlay\apache-tomcat-8.5.31\webapps\cas-client-demo\WEB-INF\web.xml

內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true">

  <display-name>Tomcat Documentation</display-name>
  <description> Tomcat Documentation. </description>


    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://cas.example.org:8443/cas</param-value>
        </init-param>
    </filter>

    <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://cas.example.org:8443/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://127.0.0.1:8080</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://cas.example.org:8443/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://127.0.0.1:8080</param-value>
        </init-param>
        <init-param>
            <param-name>redirectAfterValidation</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>useSession</param-name>
            <param-value>true</param-value>
        </init-param>
        <!-- <init-param> <param-name>acceptAnyProxy</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>proxyReceptorUrl</param-name> <param-value>/sample/proxyUrl</param-value> </init-param> <init-param> <param-name>proxyCallbackUrl</param-name> <param-value>https://mmoayyed.unicon.net:9443/sample/proxyUrl</param-value> </init-param> -->
        <init-param>
            <param-name>authn_method</param-name>
            <param-value>mfa-duo</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 Single Sign Out 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 Authentication 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>

    <welcome-file-list>
        <welcome-file> index.jsp </welcome-file>
    </welcome-file-list>
</web-app>

 

·5. cas-client-demo編寫獲取cas當前登錄信息的帳號名

新增文件D:\casoverlay\apache-tomcat-8.5.31\webapps\cas-client-demo\index.jsp

內容如下

<html>
<body> Hello World,<%=request.getRemoteUser()%>! <HR>
<a href="https://cas.example.org:8443/cas/logout">Logout</a>
</body>
</html>

 

`6. 至此我們的cas客戶端的代碼已經編寫好了

不過,

由於CAS認證是通過web servcie方式調用cas服務端的,

cas服務端的SSL證書是我們本地生成,

直接調用cas的web接口會出現報錯,

需要將證書導入到客戶端。

具體導入客戶端的步驟,我后面會寫新的文章。

 

·7. 重新啟動tomcat,訪問 cas-client-demo

https://127.0.0.1:8443/cas-client-demo/index.jsp

系統會自動跳轉到登錄頁面

 

 

-8. 輸入帳號名密碼

admin/123456

 

大功告成!

 

參考文檔


 

1. CAS中文文檔站點#各種語言開發的系統接入支持

 

 

最后,

大家想更多CAS了解的話,

可以來CAS中文文檔站點(http://www.cassso-china.cn)來瞅瞅


免責聲明!

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



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