1.背景介绍 什么是CAS
单点登录(SSO),在多系统之间用户只需要登录一次就可以访问所有互相信任的系统
SSO基础的访问流程:
-
访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。
-
定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。
-
用户认证:用户身份认证。
-
发放票据: SSO 服务器会产生一个随机的 Service Ticket 。
-
验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
-
传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端
CAS是一个应用实例,基础流程如下:
image.pngCAS分为Server和Client端,Cas Server需要独立部署,主要负责对用户的认证;CAS client 负责处理对客户端受保护资源的访问请求,需要登录的时候重定向到server 端
2.搭建CAS5.3
采用JAVA1.8,则建议采用基于CAS5.3版本的,使用Maven工程构建,CAS5.X之后使用的是基于SpringBoot的,模版引擎使用Thymeleaf.
2.1下载地址
CAS Server5.3版本,可以下载ZIP包,并解压至自己的目录下
2.2打包成服务端的war包
在解压目录下进入cmd,执行 mvn package (前提保证自己的环境有maven),即可在target下生成cas.war包
2.3 tomcat启动
cas.war放到tomcat的apache-tomcat-9.0.36\webapps
中,启动tomcat
启动后在即可在tomcat的webapps目录下看到解压后的cas目录
修改参数:
- 由于CAS默认使用https,为了方便springboot搭建的客户端采用http访问,需要改为兼容使用http协议
webapps\cas\WEB-INF\classes\application.properties
最后一行添加:
也可以修改端口,默认是https协议8443端口,
修改默认的登录账号和密码
##
# 修改http 端口
#
server.context-path=/cas
server.port=8080
##
# 修改用户名、密码
#
cas.authn.accept.users=admin::admin
#启用记载JSON配置文件
#打开文件cas\WEB-INF\classes\application.properties
#增加如下配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
- 在webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
支持http
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^(https|http|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 10000001,
"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
"evaluationOrder" : 10000
}
cas 访问地址:
CAS客户端配置
# CAS客户端配置(就是自己项目)
pom.xml依赖
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>2.1.0-GA</version>
</dependency>
application.properties配置文件
客户端1
server.port=8088
#cas服务端的地址
cas.server-url-prefix=[http://localhost:8080/cas](http://localhost:8080/cas)
#cas服务端的登录地址
cas.server-login-url=[http://localhost:8080/cas/login](http://localhost:8080/cas/login)
#当前服务器的地址(客户端)
cas.client-host-url=[http://localhost:8088](http://localhost:8088)
#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
**每个客户端只要修改当前服务器地址就行了**
如客户端2
**server.port=8090**
#cas服务端的地址
cas.server-url-prefix=[http://localhost:8080/cas](http://localhost:8080/cas)
#cas服务端的登录地址
cas.server-login-url=[http://localhost:8080/cas/login](http://localhost:8080/cas/login)
#当前服务器的地址(客户端)
**cas.client-host-url=[http://localhost:8090](http://localhost:8090)**
#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
配置完成
没有登陆时[http://localhost:8088](http://localhost:8088)和[http://localhost:8090](http://localhost:8090)访问都会跳到CAS 登陆页
只要客户端1登陆了,登陆端2就能直接访问,反之也能访问
参考:
CAS5.3单点登录服务端搭建与整合springboot
CAS服务端搭建和结合Springboot搭建CAS客户端验证单点登录
网友评论