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使用记系列: