單點登陸CAS使用記(二):部署CAS服務器以及客戶端

CAS-Server下載地址:https://www.apereo.org/projects/cas/download-cashtml

CAS-Client下載地址:http://developer.jasig.org/cas-clients/web

CAS官方教程: https://wiki.jasig.org/display/CASUM/CAS+on+Windows+Quick+Setup+Guide瀏覽器

 

版本:服務器

  • CAS Server版本:cas-server-3.4.11
  • CAS Client版本:cas-client-3.2.1

 

一:下載而且導入session

1.下載CASapp

cas-server-3.4.11-release.zipwebapp

cas-client-3.2.1-release.zipmaven

 

2.解壓cas-server-3.4.11-release.zipide

能夠看到壓縮包中有許多項目,咱們只須要選用兩個項目測試

cas-server-core:主要業務功能實現,最終打包成jar被cas-server-webapp所使用

cas-server-webapp:爲CAS-server主項目,集中了各類配置文件

其餘都是一些擴展項目,特定狀況下能夠選用。

 

modules下存放了打的好各類jar、wa包,若是你想要直接使用,無需修改源碼,能夠直接把這兩個項目

部署到Tomcat下面,直接啓動。我這邊須要查看源碼,因此把源碼直接導入Eclipse中,在Eclipse中啓動。

 3.解壓cas-client-3.2.1-release.zip

cas-client-core導入Eclipse

 

二:配置CAS-Client

我如今有兩個項目須要整合單點登陸,兩個項目分部被綁定到測試域名

項目1:app1.testcas.com

項目2:app2.testcas.com

Cas-Server項目:demo.testcas.com

備註:cas-client須要commons-logging的支持,若是你的項目沒有導入本jar包,須要額外導入。

 

打開項目1的WEB-INF/web.xml

加入以下配置,紅色部分按實際狀況修改:

<!-- ======================== start ======================== -->
    <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://demo.testcas.com/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://app1.testcas.com</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <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://demo.testcas.com/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://app1.testcas.com</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <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>
    <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>
    <!-- ======================== end ======================== -->

修改項目1的pom.xml

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

項目2按照一樣步驟修改,只不過相應地址要適當修改。

 

三.啓動三個項目

Cas-Server

app1

app2

 

在地址欄輸入:https://demo.testcas.com/cas/login

默認的認證處理器支持那些用戶名等於密碼的帳號,因此任意輸入相同的用戶名與密碼便可登入。

 

四.單點登陸

此時,咱們已經實現了最簡單的單點登陸。

 

1.若是用戶還未登陸,此時不管訪問app1的哪一個網址,頁面都會cas-client重定向到CAS登陸頁面。

  重定向後的網址相似:

  https://demo.testcas.com/cas/login?service=http%3A%2F%2Fapp1.testcas.com%2Fb2c-haohai-server%2Fuser%2FcasLogin

  後綴了一個service參數。

2.當用戶輸入用戶名與密碼後點擊登陸,頁面又會被重定向會剛纔想要訪問的頁面,而且後綴了ticket參數

  網址相似:

  http://app1.testcas.com/b2c-haohai-server/user/casLogin?ticket=ST-1-l9mf0oHYjZdSSSVBQcd1-cas

3.當此時,用戶再訪問app2的網址時,這時就會繞過原有的登陸頁面,直接登入app2,app2實現了免登錄

網址相似:

  http://app2.testcas.com/b2c-server/user/casLogin?ticket=ST-2-VDMdOnCx9gAAnyQ3xfET-cas

 

4.當用戶在瀏覽器輸入

 https://demo.testcas.com/cas/logout

強行註銷後,再訪問app1或者app2又會被重定向到CAS登陸頁面。

 


單點登陸CAS使用記系列:

相關文章
相關標籤/搜索