网站首页 > 技术文章 正文
大家好,我是mikechen。
SSO单点登录经常在大型网站被使用到,下面我就重点来详解SSO单点登录的原理机制@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
SSO
SSO,全称是Single Sign-On,是一种身份验证和授权机制,很多时候也被称为SSO单点登录。
SSO,允许用户只需一次登录,就能够访问多个相关系统或服务,而无需在每个系统中都进行单独的身份验证。
SSO单点登录价值
为什么需要SSO,主要包含如下3点:
第一:用户体验提升
用户只需要在一个系统中登录,即可无缝访问其他相关系统,无需多次输入用户名和密码,提高了用户的便利性和体验。
比如:阿里有多个系统,淘宝、天猫、聚划算、飞猪、菜鸟...等等。
用户如果每一次都需要登录,就会非常的繁琐,极大的影响用户体验。
如果一次登录后,别的系统都不需要登录,这会极大的提升用户体验。
第二:提高安全性
SSO,可以集中管理用户的身份验证,减少了密码泄露的风险,同时提供了更好的身份验证和授权控制。
因为用户只需在一个地方进行认证,减少了在多个系统中进行认证可能带来的漏洞。
第三:更加的高效
SSO,统一的身份验证体系使得用户管理更为简化。
例如:当一个用户需要添加或删除权限时,只需要在一个地方进行操作,所以大大的简化了用户登录。
SSO单点登录实现
上面,我谈到了SSO的价值,知道了SSO的作用,下面谈谈SSO的具体实现。
如下图所示:
这里我以CAS来举例,主要会涉及到3大组件:
1.CAS Server(CAS 服务器)
职责: 负责用户的身份验证和授权,管理用户的会话,并生成并管理令牌。
工作流程:
- 当用户首次登录时,CAS服务器验证用户提供的凭证(通常是:用户名和密码)。
- 在验证成功后,CAS服务器为用户生成一个令牌,这个令牌包含有关用户身份的信息。
- CAS服务器将这个令牌返回给CAS客户端,同时也可以生成一个TGT(Ticket Granting Ticket),作为用户会话的全局凭证。
- 令牌、或TGT、将被用于,后续的单点登录和访问控制。
2.CAS Client(CAS 客户端)
职责: 集成到应用程序中,处理用户的登录和CAS服务器的通信。
工作流程:
- 当用户尝试访问应用程序时,CAS客户端检查用户是否已经登录。
- 如果用户未登录,CAS客户端将用户重定向到CAS服务器以进行身份验证。
- 用户在CAS服务器上成功登录后,CAS服务器返回一个令牌、或TGT。
- CAS客户端使用这个令牌或TGT与CAS服务器进行验证,并获取用于访问Service的ST(Service Ticket)。
3.Service(受保护的应用)
职责: 表示用户想要访问的资源,每个Service都有一个唯一的标识符。
工作流程:
- 用户通过CAS客户端尝试访问Service。
- CAS客户端获取用户的ST并将其与Service一起发送给CAS服务器。
- CAS服务器验证ST的有效性,并检查用户是否有权访问该Service。
- 如果验证成功,CAS服务器授予用户访问Service的权限。
这三个组件共同构成了SSO单点登录系统,通过这个系统,用户可以在多个应用之间实现一次登录,即可访问受保护的资源。
以上就是SSO单点登录的介绍,希望对你掌握好SSO有所参考!
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-01 单点登录终极方案之 CAS 应用及原理
- 2024-10-01 Spring Boot+CAS 单点登录,如何对接数据库?
- 2024-10-01 cas单点登录服务器连接数据库 cas单点登出
- 2024-10-01 shiro集成spring使用cas单点登录配置
- 2024-10-01 聊聊单点登录(SSO)中的CAS认证,看完秒懂!
- 2024-10-01 单点登录(SSO)解决方案介绍 单点登录实现流程
- 2024-10-01 Java实现SSO单点登录 java单点登录解决方案
- 2024-10-01 Spring Security 项目模块及依赖项详解
- 2024-10-01 基于spring-security+jwt与cas-server5.3对接
- 2024-10-01 单点登录(SSO)看这一篇就够了 单点登录的三种实现方式简书
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)