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

业务背景

在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,用户用不同的账号即可登录,很方便。 但随着企业的发展,用到的系统随之增多,用户在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于用户来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。

什么是 SSO?

单点登录(Single Sign-On, SSO)是一种用户认证机制,允许用户在一个地方登录后,能够访问多个相关但独立的软件系统,而无需在每个系统中重新登录。这种机制简化了用户的登录过程,提升了用户体验,同时也便于企业对用户身份的集中管理和安全控制。

SSO 的主要特点
  1. 一次登录,多处访问:
    ○ 用户只需进行一次身份验证,就可以访问多个应用程序或系统,无需重复输入用户名和密码。
  2. 集中管理:
    ○ SSO 允许企业集中管理用户的身份和权限,从而简化用户账户的管理,降低管理成本。
  3. 提升用户体验:
    ○ 减少了用户的登录次数,提高了用户的操作效率和满意度。
  4. 增强安全性:
    ○ 通过集中管理和统一的认证机制,可以更有效地实施安全策略和监控,减少了密码疲劳和密码泄露的风险。

SSO 有什么好处?

单点登录(SSO)为用户和组织提供了许多好处,从提高用户体验到增强安全性,具体好处如下:

对用户的好处
  1. 简化登录流程:
    ○ 用户只需一次登录即可访问多个应用程序,减少了重复输入用户名和密码的次数。
  2. 提高用户体验:
    ○ 简化的登录流程提升了用户对系统的满意度和使用效率。
  3. 减少密码疲劳:
    ○ 用户只需记住一个密码,降低了忘记密码的可能性,减少了重置密码的需求。
  4. 无缝切换:
    ○ 用户可以在不同的应用程序之间无缝切换,不需要每次都重新登录。
对组织的好处
  1. 集中管理:
    ○ 集中管理用户身份和访问权限,简化了用户账户的管理,提高了管理效率。
  2. 增强安全性:
    ○ 通过统一的认证机制和策略,可以更好地实施和监控安全策略,减少了弱密码和密码泄露的风险。
  3. 降低管理成本:
    ○ 减少了支持和管理多个认证系统的开销,降低了 IT 支持的工作量。
  4. 合规性:
    ○ 统一的认证和授权机制有助于企业满足各种法规和合规要求(如 GDPR、HIPAA 等)。
  5. 提高生产力:
    ○ 用户不需要频繁登录和记住多个凭证,可以更专注于实际工作,提升整体工作效率。
  6. 数据一致性:
    ○ 通过集中管理用户信息,可以确保各个系统中用户数据的一致性,减少数据冗余和错误。
技术和安全优势
  1. 统一的身份验证:
    ○ 通过使用标准的认证协议(如 OAuth、OpenID Connect、SAML),可以实现跨平台和跨组织的身份验证。
  2. 多因素认证(MFA)集成:
    ○ SSO 系统通常支持集成多因素认证,进一步增强了系统的安全性。
  3. 简化权限管理:
    ○ 通过 SSO,可以统一管理用户的访问权限,确保只有授权用户才能访问特定资源。
  4. 日志和监控:
    ○ 统一的认证机制使得日志记录和监控更加容易,帮助企业及时发现和应对安全威胁。
实际应用场景
  1. 企业内部系统整合:
    ○ 企业内部有多个业务系统,通过 SSO 实现统一访问,提高员工的工作效率和满意度。
  2. 跨组织合作:
    ○ 不同组织之间的合作需要访问共享的资源,通过 SSO 可以简化身份验证流程,提高协作效率。
  3. SaaS 和云服务:
    ○ 企业使用多个 SaaS 应用和云服务,通过 SSO 实现统一登录和管理,简化了用户的访问流程。

总的来说,SSO 通过简化登录流程、集中管理用户身份和访问权限、增强安全性和提高用户体验,成为现代企业和组织不可或缺的技术手段。

单点登录设计与实现

同域名下的单点登录

一个企业一般情况下只有一个域名,通过二级域名区分不同的系统。比如我们有个域名叫做:a.com,同时有两个业务系统分别为:app1.a.com 和 app2.a.com。我们要做单点登录(SSO),需要一个登录系统,叫做:sso.a.com。
我们只要在 sso.a.com 登录,app1.a.com 和 app2.a.com 就也登录了。通过上面的登陆认证机制,我们可以知道,在 sso.a.com 中登录了,其实是在 sso.a.com 的服务端的 session 中记录了登录状态,同时在浏览器端(Browser)的 sso.a.com 下写入了 Cookie。
那么我们怎么才能让 app1.a.com 和 app2.a.com 登录呢?这里有两个问题:

  • Cookie 是不能跨域的,我们 Cookie 的 domain 属性是 sso.a.com,在给 app1.a.com 和 app2.a.com 发送请求是带不上的。
  • sso、app1 和 app2 是不同的应用,它们的 session 存在自己的应用内,是不共享的。
  • 针对第一个问题,我们可以把 Cookie 的域设置为顶域,这样所有子域的系统都可以访问到顶域的 Cookie。
  • 针对第二个问题,我们可以把 Session 进行共享,共享的方法有很多,这里就不展开说了。

在这种情况下,同域名下的单点登录就实现了,但这并不是真正的单点登录。

不同域下的单点登录

当企业系统分布在不同的顶级域名下时,情况变得更加复杂。例如,假设企业除了拥有 app1.a.com 和 app2.a.com,还有一个合作伙伴系统位于 partner.b.com。此时,简单的 Cookie 顶域设置和 Session 共享不再适用,因为它们无法跨越不同的顶级域名。
为了解决跨域的单点登录问题,我们通常采用以下几种策略:

  1. 中介 Token 机制 步骤:
    a. 用户在 SSO 系统(sso.a.com)登录,认证成功后,SSO 系统生成一个全局唯一的 Token。
    b. SSO 系统将 Token 通过 URL 重定向的方式传给客户端,客户端再携带此 Token 访问目标系统(如 app1.a.com)。
    c. app1.a.com 接收到 Token 后,向 SSO 系统发起验证请求,确认 Token 的有效性(通常包含用户身份信息)。
    d. 验证通过后,app1.a.com 在本地存储(如 Cookie 或 LocalStorage)中保存该 Token,并标记用户为已登录状态。 优势:解耦了各个系统的登录状态,提高了安全性,支持跨域。
  2. OAuth / OpenID Connect
    概念:OAuth 2.0 和 OpenID Connect 是广泛采用的身份验证和授权标准,非常适合处理跨域的单点登录。通俗点说,就是外卖小哥进入小区,不需要刷门禁卡,而是打电话给你,你跟门卫叔叔说让外卖小哥进入小区里面。 流程:
    a. 用户在客户端应用请求登录时,被重定向到认证服务器(可能是 SSO 系统)。
    b. 用户在认证服务器完成身份验证,认证服务器返回一个授权码或 ID Token 给客户端。
    c. 客户端携带授权码向认证服务器请求访问令牌(Access Token)。
    d. 认证服务器验证后,发放 Access Token 给客户端。
    e. 客户端使用 Access Token 向资源服务器请求受保护资源,实现登录。 优点:标准化流程,安全可靠,广泛兼容,适用于不同组织和第三方应用之间的单点登录。

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

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

相关文章

分享6个自己每天都会打开的网站

分享6个自己每天都会打开的网站,有实用办公网站,也有休闲摸鱼网站,链接直达,速看~ 1、鸠摩搜索 https://www2.jiumodiary.com/ 一个免费的电子书下载网站,页面干净无广告,只有一个搜索框,输入…

应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因?

Hqst盈盛(华强盛)电子导读:今天分享的是应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因呢?如何解决呢? 首先,我们要了解传…

Kotlin/Android中执行网络请求

方式一:使用okhttp3 okhttp官网 okhttp3 github地址 打开build.gradle.kts文件加入依赖 dependencies {implementation("com.squareup.okhttp3:okhttp:4.9.0") }在IDEA的Gradle面板点击reload按钮便会自动下载jar 使用网络请求时需要把网络的权限打开&a…

Nuxt3 的生命周期和钩子函数(十一)

title: Nuxt3 的生命周期和钩子函数(十一) date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要:本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法,包括webpack:done用于Webpack编译完成后执行操作…

pytorch-时间序列

目录 1. 时间序列2. word embedding2.1 one hot2.2 word2vec2.3 GloVe 1. 时间序列 具有时间相关性的序列叫做时间序列,比如:语音、文本句子 2. word embedding 2.1 one hot 针对句子来说,可以用[seq_len, vector_len] 有多少个单词vecto…

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024)

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024) 会议简介 2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024)是一次重要的学术盛会,将在中国厦门举行。会议的主要目的是为全球的电子通信和计算机科学技术领域的专家、…

数字信号处理实验二(模拟信号采样与重构及频谱分析FFT)

模拟信号采样与重构及频谱分析FFT(2学时) 要求: 对一模拟信号进行采样;对该采样信号进行重构;分析它们的频谱特征。目的: 熟悉MATLAB命令和编辑、运行、调试环境;掌握采样定理及对信号的频谱分析…

简过网:考教师编制报培训班有用吗?

​ 很多想要备考教师编的朋友都会有一个疑问,那就是备考教师编报培训班有用吗? 其实,主要还是要看你是笔试和面试。 小编觉得如果是笔试的话,其实都是教育理论的东西,线下班其实没有太大的必要,第一是面授…

DFS之搜索顺序——AcWing 1116. 马走日

DFS之搜索顺序 定义 DFS之搜索顺序是指在执行深度优先搜索时,遍历图或树中节点的策略。具体而言,DFS会沿着一条路径深入到底,当无法继续深入时回溯,然后选择另一条未探索的路径继续深入。搜索顺序直接影响到搜索效率和剪枝的可能…

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制) -A 20 (显示20行) 根据代码显示进行错误排查

电脑为什么会提示丢失msvcp140.dll?怎么修复msvcp140.dll文件会靠谱点

电脑为什么会提示丢失msvcp140.dll?其实只要你的msvcp140.dll文件一损坏,然而你的电脑程序需要运用到这个msvcp140.dll文件的时候,就回提示你丢失了msvcp140.dll文件!因为没有这个文件,你的很多程序都用不了的。今天我…

无人机对地面运动目标定位---获取目标的移动方向和速度

目录 一、引子 我们利用单目无人机通过等时间间隔拍照的形式对地面某移动目标进行定位,当前,我们已经获得了每张相片上该目标的三维坐标,并且知道该无人机在飞行过程中拍照的时间间隔,那么我们就可以通过一定的计算,得…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

剪画小程序:自媒体工具推荐:视频文案提取!

各位小伙伴,你们好啊! 上周五观看《歌手 2024》第八期时,我再次被何炅老师幽默风趣的主持风格所折服。他的每一句话都仿佛带着魔力,让现场气氛热烈非凡,实在令人羡慕不已! 何炅老师的口才之所以如此出色&a…

如何在 Ubuntu上搭建 LAMP

远程登录 Ubuntu系统环境 ssh (User)(IP) # 比如:ssh lennlouis192.168.207.128 为安全起见,建议你使用 root 登录 VPS 后创建一个具有 sudo 权限的帐号。 安装和配置 Apache 2 Apache Http Server 是一个开源的,非常流行,使用…

【Unity小知识】UnityEngine.UI程序集丢失的问题

问题表现 先来说一下问题的表现,今天在开发的时候工程突然出现了报错,编辑器提示UnityEngine.UI缺少程序集引用。 问题分析与解决(一) 既然是程序集缺失,我们首先查看一下工程项目是否引用了程序集。在项目引用中查找一…

从“钓”到“管”:EasyCVR一体化视频解决方案助力水域安全管理

一、背景 随着城市化进程的加快,越来越多的市民热衷于钓鱼活动。钓鱼活动在带来乐趣的同时,也伴随着一定的安全隐患。尤其是在一些危险水域,也经常出现垂钓者的身影,非法垂钓,这给城市管理带来了不小的阻力。传统的人…

Java传引用问题

本文将介绍 Java 中的引用传递,包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况: 通过引用修改当前引用的指向 通过引用修改原来指…

华为OD机试2024年最新题库 JAVA C卷+D卷

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

统一视频接入平台LntonCVS视频监控平台具体功能介绍

LntonCVS视频监控平台是一款基于H5技术开发的安防视频监控解决方案,专为全球范围内不同品牌、协议及设备类型的监控产品设计。该平台提供了统一接入管理,支持标准的H5播放接口,使其他应用平台能够快速集成视频功能。无论开发环境、操作系统或…