网站首页 > java教程 正文
大家好,我是mikechen。
SSO单点登录经常在大型网站被使用到,下面我就重点来详解SSO单点登录的原理机制与应用场景@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
SSO单点登录
单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后,就能够访问多个关联的系统,而无需在每个系统中重新进行身份验证。
SSO单点登录价值
要体现在如下2点:
1.用户体验提升
SSO允许用户在一次登录后访问多个相关系统,无需在每个系统中都进行繁琐的身份验证。
这大大简化了用户的登录过程,提高了整体的用户体验。
如下图所示:
阿里的用户登录一次之后,就可以访问淘宝, 天猫 聚划算。
这样,避免了在每个系统中重复输入用户名和密码,提高了用户体验。
2.提高安全性
SSO有助于集中管理用户身份验证和授权,减少了密码泄露的风险。
而且,还可以更容易地监控和管理用户的权限,实施更强的身份验证,和授权策略。
除了单一登录,SSO通常还支持单一登出功能,当用户在一个系统中注销时,其他已登录的系统也会被注销。
SSO单点登录实现
SSO单点登录系统,涉及了用户身份验证、令牌生成与验证、全局会话管理、访问控制和单点注销等方面。
如下图所示:
主要会包含如下组件:
1.CAS 服务器
CAS服务器是单点登录系统的核心组件,负责用户的身份验证、生成并管理令牌、以及全局会话管理。
工作流程:
- 用户登录请求: 用户尝试访问某个需要认证的应用。
- 重定向至CAS登录页面: CAS客户端检测到用户未登录,将用户重定向至CAS服务器的登录页面。
- 用户凭证验证: 用户在CAS登录页面输入用户名和密码。
- 生成令牌(Ticket): CAS服务器验证用户凭证成功后,生成一个包含用户身份信息的令牌。
- 返回令牌和TGT: CAS服务器将令牌返回给CAS客户端,同时可能生成一个TGT(Ticket Granting Ticket)用于全局会话管理。
2.CAS Client(CAS 客户端)
CAS客户端,主要是处理用户的登录、和CAS服务器的通信。
工作流程:
- 检测用户登录状态: CAS客户端检测用户是否已经登录。
- 重定向至CAS服务器: 如果未登录,CAS客户端将用户重定向至CAS服务器,包含Service标识以及可能的登录状态(如重定向回调URL)。
- CAS登录验证: 用户在CAS登录页面输入凭证,CAS服务器验证用户身份。
- 获取Service Ticket: CAS服务器生成ST,并将其返回给CAS客户端。
- 访问受保护资源: CAS客户端将ST与Service标识一起发送至Service,实现访问控制。
3.Service
表示用户想要访问的资源,每个Service都有一个唯一的标识符。
工作流程:
- 接收ST和Service标识: Service接收CAS客户端传递的ST和Service标识。
- ST验证: Service向CAS服务器验证ST的有效性,确保ST未被使用且未过期。
- 用户授权: 验证通过后,Service授予用户访问受保护资源的权限。
4.单点注销
单点注销通知: 当用户在一个Service注销时,Service通知CAS服务器。
全局注销: CAS服务器通过TGT,通知其他关联的Service进行用户注销。
以上就是SSO单点登录的介绍,希望对你掌握好SSO有所参考。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-11-20 后端开发之多应用之间单点登录
- 2024-11-20 单点登陆常用的方式Oauth认证登录
- 2024-11-20 Python Web:如何通过JWT实现单点登录?
- 2024-11-20 4000字长文,带你了解单点登录
- 2024-11-20 SSO单点登录(三种实现方式)
- 2024-11-20 一次登录、便捷访问所有?聊聊CAS单点登录是如何实现的
- 2024-11-20 SpringBoot集成xxl-sso实现单点登录
- 2024-11-20 连环画解析“单点登录”原理,保证你能看懂
- 2024-11-20 CAS 单点登录简介
- 2024-11-20 springboot 集成cas5.3 实现sso单点登录
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)