CAS-Server下載地址:https://www.apereo.org/projects/cas/download-cas
CAS-Client下載地址:http://developer.jasig.org/cas-clients/
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
一:下載並且導入
1.下載CAS
cas-server-3.4.11-release.zip
cas-client-3.2.1-release.zip
2.解壓cas-server-3.4.11-release.zip
可以看到壓縮包中有許多項目,我們只需要選用兩個項目
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使用記系列:
-
單點登錄CAS使用記(一):前期准備以及為CAS-Server配置SSL協議
-
單點登錄CAS使用記(二):部署CAS服務器以及客戶端
-
單點登錄CAS使用記(三):實現自定義驗證用戶登錄
-
單點登錄CAS使用記(四):為登錄頁面加上驗證碼
-
單點登錄CAS使用記(五):cas-client不攔截靜態資源以及無需登錄的請求。
-
單點登錄CAS使用記(六):單點登出、單點注銷
-
單點登錄CAS使用記(七):關於服務器超時以及客戶端超時的分析
-
單點登錄CAS使用記(八):使用maven的overlay實現無侵入的改造CAS