单点登录协议

一、CAS

统一身份认证CAS(Central Authenicaton Service)是SSO的开源实现,利用CAS实现SSO可以很大程度的降低开发和维护的成本。
在这里插入图片描述
CAS由CAS Server和CAS Client两部分组成:

  • CAS Server:单点验证服务器。
  • CAS Cient:共享CAS Sever登录态的客户端。

CAS三个重要术语:TGT (Ticket Granting Ticket),TGC (Ticket Granting Cookie)和ST (Service Ticket).

  • ST为CAS Server签发的一张一次性票据,CAS Client使用ST与CAS Server进行交互,获取用户的验证状态;
  • TGT为用户登录后生成的票根,包含用户的认证身份、有效期等,存储于CAS Server中,类似于服务器会话;
  • TGC存储于cookie中,类似于会话ID,用户与CAS Server交互时,帮助用户查找相应的TGT。

CAS单点登录的完整流程如下:

  1. 用户通过浏览器访问CAS Client的某个界面,如访问平台已安装的某个组件
  2. 当CAS CIient判断用户需要进行身份认证时,携带senice返回302状态码,指示浏览器重定向到CAS Senver。service指向用户想访问的页面。
  3. 浏览器携service重定向到CAS Server;
  4. CAS Server获取并校验用户cookie中携带的TGC,若成功则身份认证成功;否则将用户重定向到CAS Server提供的登录页,由用户输入用户名、密码,再完成身份认证。
  5. 若用户之前登录过系统,那么CAS Server可以获取用户的TGC,根据TGC获取TGT。若首次登录,则CAS Senver会首先生成TGT。每次验证,CAS Sener根据TGT签发一个ST,然后把ST拼接到senice中,同时将相应TGC设置到用户cookie中(域为CAS Server),并返回302状态码,指示浏览器重定向到service;
  6. 浏览器存储TGC,并携带ST重定向到service。
  7. CAS Client取得ST(即请求参数的ticket)后,会向CAS Server请求验证该ST的有效性。
  8. 若CAS Server验证该ST有效,就告知CASClient该用户有效,并返回该用户信息。CAS Cient获取用户信息后,可以使用sesion的形式管理用户会话。后续的交互请求无需再重定向到CAS Server,CAS Client直接返回用户请求的资源即可,CAS Client获取用户信息后,可以使用session的形式管理用户会话。后续的交互请求无需再重定向到CAS Server,CAS Client直接返回用户请求的资源即可。

二、OAuth2协议

OAuth 是一个关于授权(authorization )的开放网络标准,用来授权第三方应用获取用户数据,是目前最流行的授权机制,它当前的版本是2.0.

在这里插入图片描述

用一个常见的场景来描述完整的OAuth2协议:用户登录A网站,想进行评论操作时,被提示需要进行登录,可选择使用B平台授权服务进行登录。B平台同意授权后,A网站可获得相应权限的资源,回到A网站,即可进行评论操作。

授权服务工作的核心内容划分为两大部分,一个是颁发授权码 code,一个是颁发访问令牌 accessToken。最终要获取到访问令牌 accessToken,才可以去请求受保护资源。
而授权码code只是一个换取访问令牌 accessToken 的临时凭证。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值