cas 单点登录_CAS单点登录原理解析

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS是一种基于http协议的B/S应用系统单点登录实现方案,认识CAS之前首先要熟悉http协议、Session与Cookie等Web开发基本知识。

1.http协议

HTTP是一个客户端和服务器端请求和应答的标准,我们全后端开发对接的Rest接口就是基于http协议。http协议包含http请求消息(HttpRequest)和http应答消息(HttpResponse)两部分。

  • 理解http协议是无状态协议的含义
  • 熟记常见的http协议状态码,其中302等与cas相关
  • 熟记常见的http请求头,其中Cookie等与cas相关
  • 熟记常见的http应答头,其中Set-Cookie、Location等与cas相关

2.Session与Cookie会话机制

http协议本身是无状态的,但有时候我们需要http请求保持状态,我们引入Session与Cookie。
Session用在服务端,用于存储当前所有客户端需要保持的状态值,并为每一个客户端生成一个唯一编码,然后通过http响应头Set-Cookie将这个编码发送给客户端。

Cookie用在客户端,用于记录后端发来过的唯一编码,该编码与服务端上的对应的状态值对应,在下一次请求的时候通过http请求头Cookie带上这个编码,服务端就能根据这个编码获取该客户端之前记录的所有状态值。

b4889ddfd7c959255dbdd6937106b7ce.png

3.普通登录

登录成功后,在Session中写入登录用户的信息,退出时清空Session中的用户信息。可以通过filter实现。

4.CAS单点登录| 两次前端跳转、一次后端验证

4.1首次访问(访问第一个应用系统App1)

CAS首次登录会经过两次前端跳转、一次后端验证。在应用系统端需要集成CasClient的jar包,把其中的filter配置到站点web.xml中,用于拦截请求、判断登录、发起跳转或发起验证等。在SSO服务器上部署CasServer的war包,需要配置用户数据源,根据需求修改登录页面。

c633af38db0a4538aee2eb558efc8d05.png

第一次跳转:客户端访问应用系统,应用系统判断Session发现未登录,返回302跳转到sso登录页面,并传递service参数给sso,该service参数有两个作用:

  1. service一般传递应用系统url地址,用于sso认证通过后回跳到应用系统;
  2. service参数同时会被cas服务端的作为cas客户端的唯一标记记录下来,用于后期匹配相应的认证凭据;

第二次跳转:浏览器显示登录页面,用户输入账号密码登录成功后,sso会返回302跳转回到原来请求的应用系统页面,并携带ticket参数,作为认证票据,同时通过Set-Cookie向浏览器记录TGT,(TGT的作用将在下一个应用系统需要登录的时候体现出作用,是避免重复登录的关键)

一次后台验证:应用系统接收到带有ticket的请求后,从后台直接向sso服务器发起一个http请求,将service和ticket作为参数,用于验证ticket的有效性;如果ticket有效,sso服务器将返回该ticket对应的登录用户名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值