CAS实现WEB端单点登陆原理浅析

1. SSO

1.1 简介

SSO(Single Sign On),即单点登陆,主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。单点登陆是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

简单的 SSO 的体系中,会有下面三种角色:

       1 , User (多个)

       2 , Web 应用(多个)

       3 , SSO 认证中心( 1 个)

       虽然 SSO 实现模式千奇百怪,但万变不离其宗:

1  Web 应用不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中心进行。

2  SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是张三 / 李四。

3  SSO 认证中心和所有的 Web 应用建立一种信任关系, SSO 认证中心对用户身份正确性的判断会通过某种方法告之 Web 应用,而且判断结果必须被 Web 应用信任。

1.2 SSO的三种实现技术

  • 代理登录(agent):用于无法改造的旧系统;
  • 令牌环(token):通过Cookie共享令牌环的方式传递当前用户信息,实现SSO,存在跨域问题;
  • 身份票据(ticket):除了增加一台信任验证服务器,完全满足了存储信任,验证信任,作用范围和安全性的问题,也是适用最广的webSSO实现方式(CAS)

2. CAS

2.1 简介

CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。

2.2 结构体系

从结构体系看, CAS 包括两部分: CAS Server 和 CAS Client 。

2.2.1 CAS Server

CAS Server 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 / 密码等凭证(Credentials) 。

2.2.2 CAS Client

CAS Client负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证。(原则上,客户端应用不再接受任何的用户名密码等 Credentials )。

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。

2.3 CAS原理及协议

2.3.1 CAS经典图

下图为CAS最为经典的流程说明,下面来一步步进行解读

1. 访问服务:用户通过浏览器发送请求访问应用系统提供的服务资源。

2. 定向认证: CAS Client会重定向用户请求到 CAS Server。

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

4. 发放票据: CAS Server会产生一个随机的 Service Ticket 。

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

6. 传输用户信息: CAS Server验证票据通过后,传输用户认证结果信息给客户端。

2.4 场景介绍

下面介绍两种用户登陆场景,详细介绍下CAS单点认证的步骤:

2.4.1 用户首次登录时流程

1)、用户浏览器访问系统A需登录受限资源,此时进行登录检查,发现未登录,然后进行获取票据操作,发现没有票据。

2)、系统A发现该请求需要登录,将请求重定向到认证中心,获取全局票据操作,没有,进行登录。

3)、认证中心呈现登录页面,用户登录,登录成功后,认证中心重定向请求到系统A,并附上认证通过令牌,此时认证中心同时生成了全局票据。

4)、此时再次进行登录检查,发现未登录,然后再次获取票据操作,此时可以获得票据(令牌),系统A与认证中心通信,验证令牌有效,证明用户已登录。

5)、系统A将受限资源返给用户。

2.4.2 已登录用户首次访问应用群中系统B

 

1)、浏览器访问另一应用B需登录受限资源,此时进行登录检查,发现未登录,然后进行获取票据操作,发现没有票据。

2)、系统B发现该请求需要登录,将请求重定向到认证中心,获取全局票据操作,获取全局票据,可以获得,认证中心发现已经登录。

3)、认证中心发放临时票据(令牌),并携带该令牌重定向到系统B。

4)、此时再次进行登录检查,发现未登录,然后再次获取票据操作,此时可以获得票据(令牌),系统B与认证中心通信,验证令牌有效,证明用户已登录。

5)、系统B将受限资源返回给客户端。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值