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瀏覽器
版本:服務器
一:下載而且導入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使用記系列: