CAS服务端/客户端——搭建(Springboot搭建CAS--验证单点登录)

1.背景介绍 什么是CAS
单点登录(SSO),在多系统之间用户只需要登录一次就可以访问所有互相信任的系统

SSO基础的访问流程:

  1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。

  2. 定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。

  3. 用户认证:用户身份认证。

  4. 发放票据: SSO 服务器会产生一个随机的 Service Ticket 。

  5. 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。

  6. 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端

CAS是一个应用实例,基础流程如下:

image.png

CAS分为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 访问地址:

http://localhost:8080/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客户端验证单点登录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容