首先说明的是,本文提供的是一个快速上手的实例,并不打算详细阐述单点登录的概念和CAS的工作原理。这也是本人平时学习的习惯:不管什么技术,先把环境搭起来,从最简单的Hello World逐步到其背后的Why-What-How。
一、准备工作
单点,至少我们得跨域吧,所以我这里部署了三个系统到三个Tomcat下:
应用 | 域名 | Tomcat端口 | 作用 | 来源 |
---|---|---|---|---|
CAS Server | cas-server.com | 38080 | 中央认证服务 | 官网下载 |
web-one | cas-app1.com | 18080 | 接入系统1 | 自定义 |
web-one | cas-app2.com | 28080 | 接入系统2 | 自定义 |
实现不同域名的模拟,只需配置hosts文件:
\System32\drivers\etc\hosts
127.0.0.1 cas-app1.com
127.0.0.1 cas-app2.com
127.0.0.1 cas-server.com
二、CAS Server部署
1 下载CAS Server
下载地址:https://www.apereo.org/projects/cas/download-cas
当前使用的是3.5.0版本
2 获取CAS Server部署包
使用cas server的方法有两种:
1. 直接将解压后文件夹下的modules文件夹中的cas-server-webapp-3.5.0.war到Tomcat中;
2. Eclipse中导入cas-server-3.5.0多模块maven项目,在Eclipse中启动cas-server-webapp这个web项目
不管用哪种方式,都是一样的,只是cas帮我们打好了包而已,第2种导入Eclipse便于我们调试和修改代码。
3 修改配置
1 WEB-INF/cas.properties
只需修改cas server部署的Tomcat的访问路径即可:
server.name=http://cas-server:38080
2 WEB-INF/deployerConfigContext.xml
为了简单起见,我们不启用HTTPS,添加requireSecure为false:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false" />
3 ticketGrantingTicketCookieGenerator.xml
同样添加cookieSecure为false:
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
4 war