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

概述

单点登录(SSO: Single Sign-On)是对多个相关但独立的软件系统进行身份验证的属性。使用此属性一次登录(log in)用户,并获得对所有系统的访问权,而无需提示再次登录每个系统。相反(Conversely),单点退出系统(logout)是一种属性,其中一个单点退出操作终止对多个软件系统的访问。

单点登录(SSO: Single sign-on)是一种机制,它使用单一的身份验证操作,允许授权用户访问所有相关但独立的软件系统或应用程序,而无需在特定会话期间再次登录(log in)每个软件系统或应用程序。它降低了管理员集中管理用户的风险,通过允许移动性提高了用户的生产力,并允许用户在经过一次身份验证后访问多个服务或应用程序。这并不意味着SSO系统统一了所有服务、应用程序和系统的帐户信息,而是将用户需要登录的多种帐户信息隐藏在一个单一的帐户中。一旦用户登录,SSO系统就会生成各种应用程序和系统接受的身份验证信息。

SSO的历史

SSO技术始于20世纪90年代中末(in the mid-to-late 1990s)的现场(on-premises)身份工具,该工具帮助组织安全地连接他们的计算机、网络和服务器。在过去,组织开始通过专用系统(如微软的Active Directory (AD)和轻量级目录访问协议(LDAP: Lightweight Directory Access Protocol)管理他们的用户身份,然后通过内部(on-premises)SSO或Web访问管理(WAM: Web Access Management)工具进行安全访问。

随着IT继续向云移动,分散在多个设备上,并面临更复杂的网络威胁,传统的身份管理工具一直在努力保持同步。IT团队需要一个解决方案,为用户提供对任何应用程序或服务的快速、安全的SSO访问。

SSO是如何工作的?

SSO基于联邦身份(federated Identity)的概念,即在可信(trusted)但自治的(autonomous)系统之间共享身份属性(Identity attributes)。当一个用户被一个系统信任时,他们自动被授权访问与该系统建立信任关系的所有其他人。这为现代SSO解决方案提供了基础,这些解决方案通过OpenID Connect和SAML 2.0等协议实现。

SSO令牌(tokens)如何工作?

SSO工作像数字密钥证明用户的身份。当用户使用其SSO登录登录到服务时,身份验证令牌(authentication token)将被创建并存储在其浏览器或SSO解决方案的中央身份验证服务(CAS: central authentication service)服务器中。用户随后访问的任何应用程序或网站都将与SSO服务进行检查,然后SSO服务发送用户令牌以确认其身份,并为他们提供访问,而无需再次登录(log in)。这个过程确保了跨不同平台的无缝和安全体验。

SSO的实现方法

SSO的实现方法多种多样,主要可以分为以下几类:

基于SAML的SSO

SAML(Security Assertion Markup Language)是一种基于XML的标准化身份验证协议。SAML SSO的工作原理是,用户首先在SAML身份验证服务提供商(SAML IdP)上进行身份验证,获得一个SAML断言。之后,用户可以使用该断言访问任何支持SAML的应用程序或系统。

特点:

  • 开放标准,易于部署和实施。
  • 可扩展性好,支持多种身份验证方式。
  • 灵活度高,可以根据需要进行定制。

基于OAuth的SSO

OAuth是一种授权协议,常用于社交网络登录。OAuth SSO的工作原理是,用户首先在OAuth授权服务器上进行身份验证,并授予应用程序访问其个人信息的权限。之后,应用程序可以使用授权令牌访问用户的个人信息。

特点:

  • 简单易用,易于部署和实施。
  • 可扩展性好,支持多种平台和设备。
  • 安全性高,因为使用了授权令牌机制。

在基于社交登录的SSO场景中,OAuth授权服务器通常是社交网络平台,例如Facebook、Twitter、Google等。用户可以使用他们的社交网络账户登录应用程序,而无需创建新的账户和密码。

基于OpenID Connect (OIDC)的SSO

OpenID Connect (OIDC) 是一种建立在 OAuth 2.0 之上的身份认证协议,它允许客户端应用程序验证用户身份并获取用户个人信息。OIDC 通常用于实现单点登录 (SSO),因为它可以使用户使用一套登录凭据访问多个应用程序或系统。

特点:

  • 简单易用: 用户可以使用现有的 IdP 账户登录应用程序或系统,无需创建新的账户和密码。
  • 安全性高: OIDC 使用 OAuth 2.0 的授权机制,可以有效防止用户信息泄露。
  • 可扩展性好: OIDC 支持多种身份验证方式,可以满足不同用户的需求。
  • 灵活性高: OIDC 可以根据需要进行定制,以满足特定的业务需求。

基于 OIDC 的 SSO 也有以下缺点:

  • 需要额外的 IdP: 应用程序或系统需要部署或使用第三方 IdP。
  • 增加了复杂性: OIDC 的实现比传统的用户名/密码认证更复杂。

基于Kerberos的SSO

Kerberos是一种基于对称密钥加密的认证协议,常用于企业环境中。Kerberos SSO的工作原理是,用户首先在Kerberos认证服务器上进行身份验证,获得一个Kerberos票证。之后,用户可以使用该票证访问任何支持Kerberos的应用程序或系统。

特点:

  • 安全性高,因为Kerberos使用了对称密钥加密技术。
  • 可扩展性好,适合大型企业环境。
  • 复杂性高,需要部署和维护Kerberos认证服务器。

基于Cookie的SSO

基于Cookie的SSO是一种简单的SSO实现方式。其工作原理是,用户在登录应用程序时,应用程序会在用户浏览器中存储一个Cookie。之后,用户访问其他应用程序时,应用程序会检查浏览器中的Cookie,如果发现有效的Cookie,则无需再次登录。

特点:

  • 实现简单,易于部署。
  • 不需要额外的服务器或协议。
  • 安全性较低,因为Cookie容易被窃取或伪造。

基于硬件令牌的SSO

基于硬件令牌的SSO是一种安全性的SSO实现方式。其工作原理是,用户使用硬件令牌生成一次性密码,然后使用该密码登录应用程序。

特点:

  • 安全性高,因为一次性密码很难被窃取或伪造。
  • 易于使用,无需安装额外的软件。
  • 成本较高,需要为每个用户购买硬件令牌。

总结

SSO的各种方法各有优缺点,应根据实际需求选择合适的SSO方案。

在选择SSO方案时,应考虑以下因素:

  • 安全性:SSO方案应能提供足够的安全性,以保护用户身份信息。
  • 可扩展性:SSO方案应能支持未来的扩展,以满足不断增长的需求。
  • 易用性:SSO方案应易于使用,方便用户登录和访问应用程序。
  • 成本:SSO方案的成本应在可承受的范围内。

SSO使用的认证方式来分类

根据SSO使用的认证方式,可以将其分为两大类:

  • 基于凭证的SSO(Credential-based SSO):用户使用用户名和密码等凭证进行身份验证,然后获得用于访问应用程序或系统的Cookie或令牌。
  • 基于令牌的SSO(Token-based SSO):用户使用预先生成的令牌进行身份验证,无需提供凭证。

以下表格总结了基于凭证的SSO和基于令牌的SSO的特点和实现方式:

认证方式 特点 实现方式
基于凭证的SSO(Credential-based SSO) * 简单易用,易于部署
* 不需要额外的服务器或协议
* 安全性较低,因为Cookie或令牌容易被窃取或伪造```
* 基于Cookie的SSO:用户登录应用程序时,应用程序会在用户浏览器中存储一个Cookie。之后,用户访问其他应用程序时,应用程序会检查浏览器中的Cookie,如果发现有效的Cookie,则无需再次登录。
* 基于硬件令牌的SSO:用户使用硬件令牌生成一次性密码,然后使用该密码登录应用程序。
基于令牌的SSO(Token-based SSO) * 安全性高,因为令牌不易被窃取或伪造
* 可扩展性好,支持多种身份验证方式
* 复杂性较高,需要部署和维护令牌服务器
* 基于Kerberos的SSO:用户首先在Kerberos认证服务器上进行身份验证,获得一个Kerberos票证。之后,用户可以使用该票证访问任何支持Kerberos的应用程序或系统。
* 基于SAML的SSO:用户首先在SAML身份验证服务提供商(SAML IdP)上进行身份验证,获得一个SAML断言。之后,用户可以使用该断言访问任何支持SAML的应用程序或系统。
* 基于OAuth的SSO:用户首先在OAuth授权服务器上进行身份验证,并授予应用程序访问其个人信息的权限。之后,应用程序可以使用授权令牌访问用户的个人信息。

参考

  • okta.com/blog/2021/02/single-sign-on-sso
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容