开发者学堂课程【Java面试疑难点串讲5:系统架构及项目设计:SSO处理流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/28
SSO处理流程
阿里云开发者学院
目录:
一、SSO的处理流程
二、CSA
一、SSO的处理流程
●所谓单点登录用在什么场景上:单点登录的上主要是用再集群上的应用场景。
●SSO应用场景
◆阿里云目前支持两种SSO方式:角色SSO和用户SSO。本文为您介绍这两种方式的适用场景和选择依据,帮助您根据整体业务需求选择合适的SSO方式。
★角色SSO
角色SSO适用于以下场景:
出于管理成本考虑,不希望在云端创建和管理用户,从而避免用户同步带来的工作量。
在使用SSO的同时,仍然保留一部分云上本地用户,可以在阿里云直接登录。云上本地用户的用途可以是新功能测试、网络或企业IdP出现问题时的备用登录方式等。
根据用户在本地IdP中加入的组或者用户的某个特殊属性,来区分云上拥有的权限。当进行权限调整时,只需要在本地进行分组或属性的更改。
a、拥有多个阿里云账号但使用统一的企业IdP,希望在企业IdP配置一次,就可以实现到多个阿里云账号的SSO。
b、各个分支机构存在多个IdP,都需要访问同一个阿里云账号,您需要在一个阿里云账号内配置多个IdP进行SSO。
C、除了控制台,也希望使用程序访问的方式来进行SSO。
★用户SSO
用户SSO适用于以下场景:
a、希望从阿里云的登录页面开始发起登录,而非直接访问您IdP的登录页面。
b、需要使用的云产品中有部分暂时不支持角色访问。
C、IdP不支持复杂的自定义属性配置。
d、没有上述需要使用角色SSO的业务需求,而又希望尽量简化IdP配置。
二、CAS
●CAS有一个自己的流程,在其中SSO流程有一个最关键的流程是https(Openssl 证书签发)
CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。
特点
1、开源的企业级单点登录解决方案。
2、CAS Server 为需要独立部署的 Web 应用。
3、CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等语言编写的各种web应用。
4、CAS属于Apache 2.0许可证,允许代码修改,再发布(作为开源或商业软件)。
5、原理和协议
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。
用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景。