CAS单点登录原理

1.1 什么是单点登录?

单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

1.2 什么是CAS?

CAS框架:CAS(Central Authentication Service,即:统一认证服务)是实现SSO单点登录的框架。

1.3 CAS框架结构

CAS分为两部分,CAS Server和CAS Client。

CAS Server用来负责用户的认证工作,就像是把第一次登录用户的一个标识

存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。

CAS Client就是我们自己开发的应用程序,需要接入CAS Server端。当用户

访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。

1.4 CAS中3个术语

Ticket Granting ticket (TGT) :可以认为是CAS Server根据用户名密码生成的一张票,存在Server端。
授权的票据证明,由 CAS Server 通过 SSL 方式发送给终端用户,存放用户身份认证凭证的Cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证。

Ticket-granting cookie (TGC) :其实就是一个Cookie,存放用户身份信息,由Server发给Client端。
TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后,CAS生成Cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是Cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的Cookie,则CAS以此Cookie值为key查询缓存中有无TGT ,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。

Service ticket (ST) :由TGT生成的一次性票据,用于验证,只能用一次。相当于Server发给Client一张票,然后Client拿着这个票再来找Server验证,看看是不是Server签发的。
ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含Cookie,则CAS会以此Cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。

1.5 CAS处理流程

一、CAS处理流程图,如下图所示:

在这里插入图片描述

1、 用户访问网站,第一次来,重定向到 CAS Server,发现没有cookie,所以再重定向到CAS Server端的登录页面,并且URL带有网站地址,便于认证成功后跳转,形如 http://cas-server:8100/login?service=http://localhost:8081

注意:service后面这个地址就是登录成功后要重定向的下游系统URL。

2、 在登陆页面输入用户名密码认证,认证成功后cas-server生成TGT,再用TGT生成一个ST。 然后再第三次重定向并返回ST和cookie(TGC)到浏览器

3、浏览器带着ST再访问想要访问的地址http://localhost:8081/?ticket=ST-25939-sqbDVZcuSvrvBC6MQlg5

注意:ticket后面那一串就是ST

4、浏览器的服务器收到ST后再去cas-server验证一下是否为自己签发的,验证通过后就会显示页面信息,也就是重定向到第1步service后面的那个URL

首次登陆完毕。

5、再登陆另一个接入CAS的网站,重定向到CAS Server,server判断是第一次来(但是此时有TGC,也就是cookie,所以不用去登陆页面了),但此时没有ST,去cas-server申请一个于是重定向到cas-server,形如:http://cas-server:8100/login?service=http://localhost:8082 && TGC(cookie) (传目标地址和cookie)

6、cas-server生成了ST后重定向给浏览器http://localhost:8082/?ticket=ST-25939-sqfsafgefesaedswqqw5-xxxx

7、浏览器的服务器收到ST后再去cas-server验证一下是否为自己签发的,验证通过后就会显示页面信息(同第4步)

二、单点登录原理图
在这里插入图片描述
上面是一张SSO登录原理图,下面我们来分析一下具体的流程:
1.首先用户访问系统1受保护的资源,系统1发现未登陆,跳转至SSO认证中心,并将自己的参数传递过去
2.SSO认证中心发现用户未登录,将用户引导至登录页面
3.用户输入用户名和密码提交至SSO认证中心
4.SSO认证中心校验用户信息,创建用户与SSO认证中心之间的会话,称为全局会话,同时创建授权令牌
5.SSO认证中心带着令牌跳转会最初的请求地址(系统1)
6.系统1拿到令牌,去SSO认证中心校验令牌是否有效
7.SSO认证中心校验令牌,返回有效,注册系统1的地址
8.系统1使用该令牌创建与用户的会话,称为局部会话,返回给用户受保护资源
9.用户访问系统2受保护的资源
10.系统2发现用户未登录,跳转至SSO认证中心,并将自己的地址作为参数传递过去
11.SSO认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
12.系统2拿到令牌,去SSO认证中心校验令牌是否有效
13.SSO认证中心校验令牌,返回有效,注册系统2地址
14.系统2使用该令牌创建与用户的局部会话,返回给用户受保护资源

通过以上两张图及解释基本能够搞清楚CAS单点登录的原理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值