CAS是一种单点登录开源框架,遵循apache2.0协议,代码托管在github.com/apereo/cas上。
而单点登录(SSO, Single Sign On)可简单理解为当用户在一个应用上登录了,其他被授权信任的关联应用不用再登录。
比如在同一个浏览器中登录了天猫,再打开淘宝网站时会自动登录,无需单独输用户名密码或扫二维码。以下简单说明下CAS的部署与测试结果。
编译完成后可在当前路径的build/libs/找到编译打包出来的war文件cas-server-webapp-4.2.7.war;将其重命名为cas.war后,复制到tomcat的web工作目录webapps/下。
tomcat ssl证书配置具体流程可参考网上资料,这里暂不展开讨论。配置好ssl证书后,在tomcat目录下的conf/server.xml增加类似如下配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/Users/apple/Documents/cas/castestkey" keystorePass="xxxx"/> 修改hosts假设测试环境为本机,我们除了启动一个cas server,还将启动启动两个application server用于单点登录测试。以下为这三个节点的本地host配置:
127.0.0.1 sso.cas.com127.0.0.1 app1.cas.com127.0.0.1 app2.cas.com 访问cas服务tomcat起来后,我们可以这样访问cas服务:https://sso.cas.com:8443/cas/login
登录界面如下所示:
我的测试代码基于这源码项目进行了部分修改:https://github.com/willwu1984/springboot-cas-shiro。
对项目通过mvn package命令完成打包后, 在》/target下找到可执行文件cas-0.0.1-SNAPSHOT.jar。
启动测试服务:
这时我们浏览器访问 http://app1.cas.com:18091/ , 会发现页面首先被重定向到cas登录认证页面:
https://sso.cas.com:8443/cas/login?service=http://app1.cas.com:18091/shiro-cas因为当前并没真正接入数据库,可输入默认用户名:密码(casuser:Mellon)进行测试, 这时会跳转回到测试服务的主页:
这时我们运行另外一个测试应用服务,假设地址为 http://app2.cas.com:18092/。
在同一个浏览器中访问该地址时,会发现已经自动完成登录并进入主界面。