单点登录(SSO,Single Sign-On)

单点登录(SSO,Single Sign-On)是一种用户身份验证服务,允许用户使用一组登录凭据(如用户名和密码)访问多个应用程序或系统。SSO旨在提高用户体验和安全性,通过减少用户需要记住的密码数量,降低密码疲劳和重用的风险。以下是SSO工作原理的概述以及常见的实现技术。

工作原理

  1. 初始登录

    • 用户首次尝试访问SSO集成的任何应用时,会被重定向到SSO服务的登录页面。
    • 用户在这里输入一次用户名和密码。
  2. 身份验证

    • SSO服务验证用户的凭据。如果凭据有效,SSO服务会为用户创建一个会话,并发给用户一个令牌(Token)或票据(Ticket)。
  3. 令牌传递

    • 用户随后尝试访问另一个集成了SSO的应用时,SSO服务会利用已经建立的会话,不需要用户重新输入凭据,直接允许访问。
    • 用户的浏览器会向SSO服务发送令牌作为访问其他服务的凭据。
  4. 服务提供方验证

    • 每个应用或服务都会向SSO服务验证用户令牌的有效性。一旦验证通过,用户就可以访问该应用或服务。
  5. 会话结束

    • 用户登出时,SSO服务可以结束用户在所有应用中的会话,实现一处登出,处处登出的效果。

常见实现技术

  1. LDAP(轻量级目录访问协议)

    • LDAP常用于企业环境中,作为对用户身份信息进行存储和访问的目录服务。
  2. SAML(安全断言标记语言)

    • SAML是一种基于XML的开放标准,用于在安全域之间交换认证和授权数据。SAML广泛应用于企业级SSO解决方案中,特别是在Web应用和服务之间。
  3. OAuth和OpenID Connect

    • OAuth是一个授权框架,允许应用获取有限的访问权限。OpenID Connect建立在OAuth 2.0之上,添加了用户身份验证层,广泛应用于互联网服务的SSO。
  4. Kerberos

    • Kerberos是一种网络身份验证协议,使用密钥加密技术,允许节点在不安全网络上安全地证明其身份。

优点

  • 提高用户体验:用户只需记住和使用一组凭据,就可以访问所有集成的服务和应用。
  • 提高安全性:减少密码重用和疲劳,同时集中管理用户凭据和访问控制。
  • 简化管理:简化了对用户账户和访问权限的管理,尤其是在大型组织中。

缺点

  • 单点故障:SSO系统本身如果出现问题,可能会影响到所有依赖它的服务和应用。
  • 安全风险:如果SSO系统被攻破,攻击者可能获得对所有集成服务的访问权限。

SSO解决方案需要在提高用户体验和安全性之间找到平衡,同时确保对SSO系统本身的高度保护。


典型的单点登录(SSO)场景,其中包括多个应用或服务,用户在任何一个应用登录后,可以无需再次登录即可访问其他所有应用。以下是触发SSO流程的步骤:

步骤1:用户访问应用A

  • 假设用户首次尝试访问应用A的受保护资源,例如http://appA.com/protectedPage
  • 由于用户尚未登录,请求会被SSOFilter拦截。由于会话中没有用户信息(USER_INFO为空),且请求URL不是登录页面或处理登录的URL,SSOFilter会检查请求中是否包含票据(ticket)。

步骤2:重定向到SSO登录页面

  • 由于用户未登录且请求中没有票据,SSOFilter将用户重定向到SSO系统的登录页面,并附加原始请求的URL作为参数,例如http://sso.com/toLogin?url=http://appA.com/protectedPage

步骤3:用户在SSO系统中登录

  • 用户在SSO登录页面输入凭据并提交。SSO系统验证用户凭据,登录成功后,SSO系统生成一个唯一的票据(ticket),并将票据与用户信息关联存储在Redis中。

步骤4:重定向回原始应用

  • 登录成功后,SSO系统将用户重定向回原始请求的URL,并附加票据参数,例如http://appA.com/protectedPage?ticket=uniqueTicket123

步骤5:使用票据获取用户信息

  • SSOFilter再次拦截到用户请求,这次请求中包含票据。SSOFilter使用票据从Redis中获取用户信息,如果成功获取,将用户信息存储在会话中,并删除Redis中的票据。

步骤6:访问受保护资源

  • 用户信息存储在会话中后,SSOFilter放行请求,允许用户访问受保护资源。

步骤7:访问其他应用

  • 用户随后尝试访问另一个集成SSO的应用B的受保护资源。由于用户已在应用A通过SSO登录,应用B的SSOFilter可以从会话中获取用户信息,无需再次登录,用户即可访问应用B的受保护资源。

这个流程展示了单点登录的核心优势,即用户只需登录一次,就可以在多个应用或服务之间无缝切换,极大地提升了用户体验。在实际部署中,需要确保所有应用都能正确处理SSO票据,并能与SSO系统以及Redis等后端服务安全地交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSP-201903-1-小中大

CSP-201903-1-小中大 【坑!】 注意中位数的输出,当中位数为整数时不保留小数点。当两个整数相加后再除以 2 时,结果会自动向下取整,而不是得到一个准确的浮点数结果。需要确保至少有一个操作数是浮点数类型,以便执行浮点数除法&…

图表示学习 Graph Representation Learning chapter1 引言

图表示学习 Graph Representation Learning chapter1 引言 前言1.1图的定义1.1.1多关系图1.1.2特征信息 1.2机器学习在图中的应用1.2.1 节点分类1.2.2 关系预测1.2.3 聚类和组织检测1.2.4 图分类、回归、聚类 前言 虽然我并不研究图神经网络,但是我认为图高效的表示…

阅读笔记12:(全文翻译)Oocyte quality and aging

Oocyte quality and aging 作者:Ali Reza Eftekhari Moghadam, Mahin Taheri Moghadam, Masoud Hemadi, and Ghasem Saki 发表期刊:JBRA Assist Reprod. 发表时间:April 15, 2021 摘要 众所周知,由于卵子的质量和数量随年龄相关的变化,女性的生育能力在生命的第四个十年期…

电脑重装系统之Windows 10 企业版 LTSC 2021

简介 Windows 10 22H2对于我来说太不简洁,最受不了的一点是微软强行硬塞给我一些并没有什么luan用的应用和功能,比如:天气,Onedrive......以及臃肿的ui设计。而且强行进行自动更新,我是真的受不了这个,看着…

leetcode:343.整数拆分

解题思路: 拆分的越多越好(暂且认为),尽可能拆成m个近似相等的数,会使得乘积最大 dp含义:将i进行拆分得到最大的积为dp[i] 递推公式:j x dp[i-j](固定j,只通过凑dp[i-j]进而实现所…

optee UTA加载

流程 动态TA按照存储位置的不同分为REE filesystem TA:存放在REE侧文件系统里的TA; Early TA:被嵌入到optee os里的在supplicant启动之前就可用了。 这里我们讲的是常规的存放在REE侧文件系统里的TA。 通过GP标准调用的与TA通信的命令(opens…

【AIGC】Stable Diffusion的ControlNet参数入门

Stable Diffusion 中的 ControlNet 是一种用于控制图像生成过程的技术,它可以指导模型生成特定风格、内容或属性的图像。下面是关于 ControlNet 的界面参数的详细解释: 低显存模式 是一种在深度学习任务中用于处理显存受限设备的技术。在这种模式下&am…

Vue的一些基础设置

1.浏览器控制台显示Vue 设置找到扩展,搜索Vue 下载这个 然后 点击扩展按钮 点击详细信息 选择这个,然后重启一下就好了 ——————————————————————————————————————————— 2.优化工程结构 src的components里要…

MySQL数据库基础第四篇(多表查询与事务)

文章目录 一、多表关系二、多表查询三、内连接查询四、外连接查询五、自连接查询六、联合查询 union, union all七、子查询1.标量子查询2.列子查询3.行子查询4.表子查询 八、事务八、事务的四大特性九、并发事务问题十、事务隔离级级别 在这篇文章中,我们将深入探讨…

数据结构之队的实现

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

C++面经

学习视频参考 1 面向对象的三大特征 1.1 封装 1.1.1 目的 隐藏实现细节,实现模块化。 1.1.2 特性 访问权限: public:可以给所有对象访问。protected:仅对子类开放。private:仅对自己开放,可以通过友元…

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- 声明文档类型为XHTML 1.0 Transitional -…

Python四级考试笔记

Python四级考试笔记【源源老师】 四级标准 一、 理解函数及过程、函数的参数、函数的返回值、变量作用域等概念。 二、 能够创建简单的自定义函数。 三、 理解算法以及算法性能、效率的概念&#xff0c;初步认识算法优化 效率的方法。 四、 理解基本算法中递归的概念。 五、 掌…

C语言---自幂数(“水仙花数”)

1.打印0~100000的自幂数 #include<stdio.h> #include<math.h> int main() {int i 0; for (i 0; i<100000; i){int n 0;int temp i;//判断位数while (temp){n;temp temp / 10;}//每个数字求和temp i;int sum 0;while (temp){sum sum pow(temp % 10, n)…

[office] 如何固定excel单元格的方法 #笔记#微信#微信

如何固定excel单元格的方法 在Excel中录入好数据以后就需要进行统计数据&#xff0c;在有些单元格中的数据不能够改变位置&#xff0c;因此我们需要对特定的单元格进行锁定固定。下面是由小编分享的如何固定excel单元格的方法&#xff0c;供大家阅读、学习。 如何固定excel单元…

掘根宝典之C++多重继承,二义性,虚基类

多重继承派生类 除去一个类从一个基类派生&#xff0c;C还支持一个派生类同时继承多个基类 MI&#xff1a;有多个直接基类的类 1.多重继承派生类的定义 如果已经定义了多个基类&#xff0c;那么定义多重继承的派生类的形式为&#xff1a; class 派生类名:访问标号1 基类名…

【开源】SpringBoot框架开发独居老人物资配送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统&#xff0c;包含了社区档案、…

win7自带截图工具保存失效解决办法

今日发现一台远航技术的win7中自带的截图工具使用时正常&#xff0c;保存图片时没有弹出保存位置的对话窗口&#xff0c;无法正常保存图片。解决方案如下&#xff1a; 1、进入注册表编辑器。开始-搜索程序和文件-输入 regedit 按下回车键&#xff0c;打开注册表&#xff1b; 2、…

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding&#xff0c;本质上是多个Transformer的Encoder堆叠在一起。 其中单个Transformer Encoder结构如下&#xff1a; BERT-Base采用了12个Transformer Encoder。 BERT-large采用了24个Transformer Encoder。 2. BERT的…

360小工具

有时候不希望打开360安全卫士&#xff0c;但又需要使用它的小工具 小工具目录统一基于360安装目录&#xff0c;一般情况在&#xff1a;C:\Program Files (x86)\360\360Safe 备份还原小工具 C:\Program Files (x86)\360\360Safe\Utils\winrebackup\360WinREBackup64.exe 360LS…