所有WIKI > S字母 > 什么是SSO(单点登录)?

什么是SSO(单点登录)?

单点登录(SSO,Single Sign-On)是一种用户认证和授权的解决方案,允许用户使用一组凭据(如用户名和密码)登录多个相互关联的应用程序和网站,而不需要在每个应用程序和网站中重新输入凭据。在登录过程中可以使用多种身份验证(MFA)方式,例如短信验证码、智能卡、生物识别技术等,可以提高安全性。

SSO可以让用户只登录一次即可访问所有相关的应用程序,在提升用户体验的同时降低了管理成本、提高了安全性,因此在各种应用场景中都有广泛的应用。

  • 企业内部应用:企业内部有多个应用程序,如电子邮件、ERP等,使用SSO可以让员工只登录一次即可访问所有应用程序。
  • 跨组织合作:在跨组织合作的场景中,不同组织可能有不同的应用程序和系统,使用SSO可以让用户在不同组织之间无缝切换,提高工作效率。
  • 云应用:随着云计算的普及,越来越多的应用程序部署在云上,许多企业使用云应用程序,如Office 365,使用SSO可以让用户只登录一次即可访问所有云应用程序。
  • 移动应用:在移动应用中,用户可能需要登录多个应用程序,使用SSO可以让用户只登录一次即可访问所有应用程序。

本文共涉及以下几个问题:
1)什么是单点登录(SSO)?
2)SSO常用的协议和技术?
3)SSO 安全吗? 
4)SSO应用模式有几种?
5)SSO的优点是什么?
6)SSO的缺点是什么?
8)SSO如何提高安全性?
9)SSO如何处理跨域身份验证?
10)SSO与传统身份验证方法有何区别?
11)SSO 和零信任?

什么是单点登录(SSO)?

单点登录(SSO,Single Sign-On)是一种用户认证和授权的解决方案,允许用户使用一组凭据(如用户名和密码)登录多个相互关联的应用程序和网站,而不需要在每个应用程序和网站中重新输入凭据。

SSO 通过在用户访问第一个应用程序或网站时进行身份验证,然后将用户的身份信息存储在一个中央位置中,以便于其他应用程序和网站进行访问。这种方式可以简化用户的登录过程,减少用户需要记住的凭据数量,提高用户体验和工作效率。

SSO常用的协议和技术?

SSO 可通过多种身份验证协议和技术来实现。

  • 安全断言标记语言SAML:SAML(Security Assertion Markup Language)是一种基于XML的标准,用于在不同的安全域之间传递身份验证和授权数据。它允许用户在一个应用程序中进行身份验证,然后使用SAML令牌访问其他应用程序。
  • 开放授权OAuth:OAuth(Open Authorization)是一种授权框架,用于授权第三方应用程序访问用户资源。它允许用户使用他们的凭据登录到一个应用程序,然后使用OAuth令牌访问其他应用程序。
  • OpenID Connect:OpenID Connect(OIDC)是一种基于OAuth 2.0的身份验证协议,主要用于实现第三方应用程序等的社交登录。作为一种轻量级实现,OIDC/OAuth通常与SAML结合使用。
  • Kerberos:Kerberos是一种网络身份验证协议,用于在计算机网络中安全地验证用户身份。它允许用户使用他们的凭据登录到一个应用程序,然后使用Kerberos票证访问其他应用程序。
  • 轻量目录访问协议LDAP:LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录服务的协议。它定义了用于存储和更新用户凭据的目录,以及根据该目录对用户进行身份验证的过程,允许用户使用他们的凭据登录到一个应用程序,然后使用LDAP目录访问其他应用程序。
  • 活动目录AD:AD(Active Directory)是一种Microsoft Windows操作系统的目录服务,可以存储和管理组织中的用户、计算机和其他资源。

SSO 安全吗? 

是的,SSO 是一种先进且理想的身份访问管理解决方案。部署后,单点登录解决方案可帮助组织对企业应用程序和资源进行用户访问管理。SSO 解决方案使应用程序用户更容易设置和记住强密码。此外,IT 团队可以使用 SSO 工具监控用户行为,提高系统弹性,降低安全风险。

SSO应用模式有几种?

1) 同域名下

一个企业一般情况下只有一个域名,通过二级域名区分不同的系统。比如我们有个域名叫做:a.com,同时有两个业务系统分别为:app1.a.com和app2.a.com。我们要做单点登录(SSO),需要一个登录系统,叫做:sso.a.com。

2) 不同域下的单点登录

不同域下的单点登录是巧用了Cookie顶域的特性。

上图是CAS官网上的标准流程,具体流程如下:

  1. 用户访问app系统,app系统是需要登录的,但用户现在没有登录。
  2. 跳转到CAS server,即SSO登录系统,以后图中的CAS Server我们统一叫做SSO系统。 SSO系统也没有登录,弹出用户登录页。
  3. 用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。
  4. SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。
  5. app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。
  6. 验证通过后,app系统将登录状态写入session并设置app域下的Cookie。

至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。接下来,我们再看看访问app2系统时的流程。

  1. 用户访问app2系统,app2系统没有登录,跳转到SSO。
  2. 由于SSO已经登录了,不需要重新登录认证。
  3. SSO生成ST,浏览器跳转到app2系统,并将ST作为参数传递给app2。
  4. app2拿到ST,后台访问SSO,验证ST是否有效。
  5. 验证成功后,app2将登录状态写入session,并在app2域下写入Cookie。

SSO的优点是什么?

提高用户体验

用户只需记住一组凭据,就可以访问多个应用程序和服务,无需为每个应用程序单独登录。这降低了用户的认证负担,提高了用户体验。

提高生产力

用户可以更快地访问所需的应用程序和服务,无需花费时间在多个登录页面上输入凭据。这有助于提高员工的工作效率和生产力。

减少密码疲劳

由于用户只需记住一组凭据,因此可以减轻密码疲劳,降低用户因忘记密码而导致的帐户锁定和密码重置请求。

提高安全性

SSO可以与多因素认证(MFA)结合使用,提供更强大的安全保障。此外,由于用户只需记住一组凭据,因此可以鼓励用户使用更强的密码,从而提高整体安全性。

简化管理

对于IT管理员来说,SSO可以简化用户帐户和权限管理。管理员可以在一个集中的位置管理用户的访问权限,而无需在每个应用程序中单独配置。

减少支持成本

SSO可以降低IT支持成本,因为用户更少地遇到忘记密码和帐户锁定等问题。这可以减轻IT支持团队的负担,降低支持成本。

提高合规性

通过集中管理用户访问权限,SSO有助于确保企业遵守相关法规和政策。此外,SSO还可以提供详细的审计日志,以便跟踪用户活动和访问历史,有助于合规性审查。

SSO的缺点是什么?

集中式风险

由于用户只需一组凭据就可以访问多个应用程序和服务,因此如果这组凭据被盗或泄露,攻击者可能会获得对所有相关系统的访问权限。这增加了潜在的安全风险。

实施复杂性

根据组织的需求和现有基础设施,实施SSO可能会变得复杂。整合不同应用程序和服务的身份验证机制可能需要大量的开发和配置工作。

兼容性问题

并非所有应用程序和服务都支持SSO,这可能导致兼容性问题。在某些情况下,可能需要额外的开发工作来实现SSO支持。

对外部服务的依赖

如果SSO解决方案依赖于外部服务(如身份提供商),那么在这些服务出现故障或中断时,可能会影响到用户访问应用程序和服务的能力。

隐私和合规性问题

在某些情况下,将用户数据集中存储在一个SSO解决方案中可能引发隐私和合规性问题。组织需要确保其SSO实施符合相关法规和政策。

注销管理

在SSO环境中,确保用户在注销时正确地从所有关联的应用程序和服务中注销可能是一个挑战。如果注销过程没有得到妥善处理,可能会导致安全隐患。

成本

尽管SSO可以降低支持成本,但实施和维护SSO解决方案可能需要额外的投资。组织需要权衡成本和收益,以确定SSO是否适合其需求。

SSO如何提高安全性?

强制密码策略

通过强制密码策略,例如长度、复杂性和更改频率,可以增加密码的安全性,减少被猜测或破解的可能性。

多因素身份验证

在登录过程中使用多种身份验证方式,例如短信验证码、智能卡、生物识别技术等,可以提高安全性。

会话管理

会话管理可以限制用户的访问权限和时间,确保用户只能访问他们被授权的资源,并在一段时间后自动注销用户的会话。

安全协议

使用安全协议,例如SSL或TLS,可以保证通信过程中数据的加密和完整性。

监控和审计

实时监控单点登录系统的访问日志和审计日志,及时发现异常行为,保障系统的安全性。

SSO如何处理跨域身份验证?

跨域资源共享(CORS)

CORS是一种浏览器机制,允许Web应用程序在不同的域之间共享资源。通过在认证中心和应用程序之间设置CORS,可以实现跨域身份验证。

JSON Web Token(JWT)

JWT是一种基于JSON的令牌,可以在不同的域之间安全地传输数据。通过使用JWT,在认证中心和应用程序之间传递用户身份验证和授权信息,实现跨域身份验证。

前端框架

一些前端框架和库,例如React、Angular和Vue.js,提供了对SSO的内置支持,可以轻松实现跨域身份验证

SSO如何提高用户体验?

简化登录流程

SSO可以让用户在一个认证中心登录后,无需再次输入用户名和密码,即可访问其他应用程序,减少了重复登录的麻烦,简化了登录流程。

统一用户标识

SSO可以使用统一的用户标识,例如电子邮件地址或员工号码等,减少了用户需要记住多个不同的用户名和密码的烦恼。

提高访问速度

由于用户只需要登录一次,就可以访问多个应用程序,因此可以提高访问速度,减少等待时间。

提高可用性

SSO可以让用户在不同的设备上访问同一应用程序,例如在手机、平板电脑或桌面电脑上,提高了应用程序的可用性和灵活性。

提高安全性

由于SSO使用统一的身份验证机制,可以减少用户使用弱密码或重复密码的可能性,提高了安全性,从而提高了用户的信任感和满意度。

SSO与传统身份验证方法有何区别?

登录次数

传统身份验证方法需要用户在每个应用程序中都输入用户名和密码进行登录,而SSO只需要用户登录一次就可以访问多个应用程序。

用户体验

传统身份验证方法需要用户在不同的应用程序之间进行切换和登录,造成了不必要的麻烦和时间浪费,而SSO可以简化登录流程,提高用户体验。

安全性

传统身份验证方法中,用户需要记住多个不同的用户名和密码,容易造成弱密码或重复密码的情况,而SSO可以使用强密码策略和多因素身份验证等措施提高安全性。

统一管理

传统身份验证方法中,每个应用程序都有自己的用户数据库和身份验证机制,难以统一管理,而SSO可以使用统一的认证中心进行身份验证和用户管理。

可扩展性

传统身份验证方法难以适应新的应用程序和设备,而SSO可以通过添加新的应用程序和身份验证机制来扩展功能。

SSO 和零信任?

“零信任”采取“从不信任,始终验证”的安全方法:任何用户、应用或设备 – 无论是在网络外部,还是已经通过身份验证并位于网络内部 – 都必须在访问所需的下一个网络资源之前验证其身份。

随着网络变得更加分散,跨越的本地基础架构以及私有云和公有云数量更多,零信任方法对于防止渗透网络的威胁获得更多访问权限并造成最大的损害至关重要。

SSO 被广泛视为实施零信任方法的基础技术,尤其是作为 IAM 解决方案一部分的 SSO。 零信任的基本挑战是创建一个安全架构,打击渗透网络的攻击者,而不会阻碍获得授权的最终用户在网络中自由行动并完成工作或业务。 与多因子身份验证、访问和权限控制、网络微分段等技术和最佳实践相结合后,SSO 可以帮助组织实现这种平衡。

SSO单点登录适用的场景有哪些?

1. 企业内部多个业务系统的整合:在大型企业中,员工日常办公需要使用多个内部系统,如邮件系统、办公自动化系统、财务系统等。通过实施单点登录(SSO),员工只需登录一次,就可以访问所有这些系统,无需记住多个用户名和密码。这种方式不仅提高了工作效率,还减少了因密码管理不善带来的安全风险。SSO通过集中管理用户身份验证,简化了账户管理,降低了用户忘记密码或账户被滥用的风险。

2. 云平台服务:随着云计算的普及,许多企业将应用部署在云平台上。云服务提供商如腾讯云、阿里云等,通过提供单点登录(SSO)解决方案,使用户能够方便地访问和管理多个云服务应用。这种集成方式简化了用户的身份验证流程,同时增强了账户的安全性,确保用户数据的安全。

3. 社交网络登录:在互联网应用中,使用社交网络账号登录第三方应用已成为一种趋势。例如,用户可以使用微博、微信等社交账号登录电商平台或新闻应用,这种单点登录(SSO)方式为用户提供了便捷的登录体验,同时也为第三方应用带来了用户身份的真实性和可信度。

4. Web应用与移动应用:在移动互联网时代,用户期望在不同设备和平台上获得一致的体验。通过实现单点登录(SSO),用户在Web端登录后,其身份可以无缝同步到移动应用,无需重复登录。这不仅提升了用户体验,还有助于企业统一用户数据管理,实现跨平台的个性化服务。

5. 面向服务的架构(SOA):在面向服务的架构(SOA)中,服务与服务之间的通信需要安全认证。通过实施单点登录(SSO),可以简化SOA的安全问题,提高服务间的合作效率。SSO为SOA提供了一个统一的身份验证和授权平台,确保了服务调用的安全性和可靠性。

6. 大型网站:对于拥有多个子平台的大型网站,如阿里巴巴集团旗下的淘宝、天猫、支付宝等,单点登录(SSO)使用户能够方便快捷地在这些平台间切换而无需重新登录。这种SSO机制提升了用户体验,增强了用户黏性,并有助于数据的整合和分析。

7. 企业自建的用户中心:企业可以利用单点登录(SSO)技术构建自己的用户中心,如AD/LDAP,实现云服务的单点登录。这种方式有助于企业统一管理用户身份,提高安全性,同时降低管理成本和复杂性。

8. 第三方公有云用户生态系统:在构建基于第三方公有云的用户生态系统时,单点登录(SSO)允许用户使用同一个账号登录多个不同的服务和应用。这种方式简化了用户的登录流程,提高了用户满意度,并有助于构建更加紧密的用户生态系统。

9. 非标准的用户中心:对于使用多个信息系统的企业,单点登录(SSO)可以作为用户中心的网关,连接各个系统的用户中心,形成用户中心的联邦。这种集成方式有助于打破信息孤岛,实现数据共享和业务协同。

SSO单点登录常见问题有哪些?

  1. 单点故障风险:如果中心认证服务器出现故障,所有依赖它的应用系统可能都无法进行身份验证,导致服务中断。
  2. 兼容性问题:不同的应用系统可能采用不同的技术架构和协议,实现SSO时需要解决这些系统之间的兼容性问题。
  3. 安全风险集中:中心认证服务器存储了大量用户的身份信息,一旦被攻击,可能导致大规模的信息泄露。
  4. 会话管理问题:在基于Cookie的SSO实现中,Cookie的安全性和跨域问题可能导致会话管理上的问题。
  5. 用户体验问题:如果SSO系统设计不当,可能会影响用户体验,例如登录过程中的延迟或频繁的重新认证。
  6. 技术实现复杂性:对于开发者来说,实现SSO授权流程需要处理多个步骤和交互,涉及到加密、令牌管理等复杂的技术操作,增加了开发的难度和成本。

参考资料

原文:单点登录
单点登录两种应用模式介绍
单独登录三种实现方式
OAuth2.0实现单独登录