单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:
下图是 CAS 最基本的协议过程:
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。
SSO单点登录访问流程主要有以下步骤:
环境准备:
CentOS-7-x86_64-Minimal-1908 、apache-maven-3.5.4-bin 、apache-tomcat-8.5.46 、cas-overlay-template-5.1.zip
java version 1.8.0_221
首先解压cas-overlay-template-5.1.zip 到指定目录[ -d参数表示安装到指定目录下,与tar包不同的是,zip的解压的目标路径在前]。
unzip -d /usr/local/software/ cas-overlay-template-5.1.zip
若提示没有unzip,则通过以下命令安装unzip
yum install unzip
解压完成后进入目录,执行
[root@master cas-5.1]# ./build.sh run
-bash: ./build.sh: Permission denied
[root@master cas-5.1]#
若出现这种情况表明执行权限不够,我们查看操作权限
发现确实没有执行权限,加权:
chmod +x build.sh
加权成功,再次运行 ./build.sh run 该过程需要些时间。。。
完成后会在当前目录下出现一个target目录,进入该目录,会发现有个cas.war文件。
复制cas.war文件到Tomcat目录下的webapps目录下,然后开启Tomcat。(因为我的机器上之前已经开启一个tomcat7了,而cas5.x版本需要Tomcat8,再次我将Tomcat8的服务端口改为了8081,在浏览器中访问)
http://192.168.139.100:8081/cas/login
默认用户名密码为:casuser Mellon
首先修改默认登录账号和密码
首先进入到CAS部署的目录下,依次进入到以下目录下,
tomcat8-cas/webapps/cas/WEB-INF/classes
打开改目录下的application.properties文件
修改默认用户名和密码
保存退出,重新启动tomcat
再次试用默认 casuser Mellon登录后提示认证信息无效
用admin登录成功
首先继续在aplication.properties文件汇中加入如下配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
其次在进入到 tomcat8-cas/webapps/cas/WEB-INF/classes/services目录下
编辑HTTPSandIMAPS-10000001.json文件
修改serviceId的内容为(为了支持http协议的客户端,我在里面加了个http,代表所有URL符合这个正则表达式的服务都会被当成已经注册的服务)
保存退出,重新启动tomcat