编程

单点登录(SSO)原理详解

814 2024-09-27 23:08:00

1. 介绍

单点登录机制 (SSO) 允许用户登录一次应用并访问所有相关系统,而无需另外登录。本文中,我们将详细定义 SSO 的工作原理以及该技术的优缺点。

2. 基础

正如我们提到的,因为 SSO,用户可以登录一次服务,并自动登录所有相关应用。举个例子,假设我们由一个谷歌帐户。登录到谷歌的一项服务(如 Gmail)后,用户可以访问所有其他独立应用,如 Youtube、Google Play 或 Google Drive。此外,在所有这些相关系统中使用相同的凭据。

在组织中,员工每天使用多个应用。SSO 不再需要单独登录。此外,用户不需要存储或记住多个凭据。因此,系统管理员在配置系统访问权限方面的工作较少。随后,忘记或无法使用凭据的情况不太可能发生,也更容易处理。如我们所见,SSO 可以改善组织中的多个流程

2.1. 联邦身份

首先,我们来定义以下联邦身份必需处理的相关问题:

  • 身份认证(Authentication)
  • 授权(Authorization)
  • 用户管理

身份验证是验证用户身份的过程。简单地说。它确保用户真的是他或她声称的那个人。有很多流行的身份验证方法,如密码、软件或硬件令牌、个人识别号、指纹等。

授权过程验证用户是否有权访问特定资源。例如,网店管理员将能够访问买家不应该访问的资源,例如更新产品的价格。授权应始终在身份验证后进行。用户管理是对用户帐户的监督。所以,一般来说,它包括创建、存储和修改。

单点登录仅与身份验证过程相关。因此,它本身并不是一个联邦身份,而只是其中的一部分。它的任务是验证用户的身份,并在相关应用之间共享该信息。

让我们看看 SSO 在实践中是如何工作的。

2.2. 工作流程

让我们简要介绍一下 SSO 解决的问题。我们希望用户能够在 domain1 和 domain2 使用相同的登录名和密码登录。此外,如果用户已经在 domain1 登录,他应该自动在 domain2 登录,反之亦然。解决方案是在域之间共享会话数据。但是,由于同源策略,Cookie 不能在域之间共享。因此,SSO 通过对用户进行身份验证并以各种方式共享他们的会话数据来提供帮助。

我们将在下一节介绍不同的 SSO 配置。一般来说,有一个中心域可以识别用户并共享他们的会话数据,例如以 JWT 的形式。让我们大致描述一下 SSO 过程。

  1. 用户进入 domain1
  2. domain1 检测到用户没有携带会话 cookie,因此将用户重定向到 SSO 系统
  3. SSO 系统检测到用户没有携带会话 cookie,从而提示登录页面
  4. SSO 系统对用户进行身份认证
  5. SSO 系统设置会话 cookie (假设身份验证成功)
  6. SSO 系统重定向回到 domain1,并携带包含你会话数据的参数(比如,JWT)
  7. domain1 使用传递的数据设置会话 cookie
  8. 用户进入 domain2
  9. domain2 检测到用户没有携带会话 cookie,因此将用户重定向到 SSO 系统
  10. SSO 系统检测到存在会话 cookie
  11. SSO 系统重定向回到 domain2,并携带包含你会话数据的参数(比如,JWT)
  12. domain2 使用传递的数据设置会话 cookie

上述方法是最通用的方法。它可能因实施的 SSO 配置和架构而异。下面我们可以在图上看到前面描述的过程:

3. 架构

有多种架构可用于实现 SSO。

常见用例由 WEB SSO 处理。WEB SSO 仅适用于可以使用 WEB 浏览器访问的服务。它允许用户通过一次登录访问一组 web 服务器。实现 WEB SSO 有两种主要方法:

  • 使用基于 web 的反向代理控制身份验证过程
  • 使用安装在每个特定服务器上的代理

这种架构通常使用 Cookie 来跟踪用户的身份验证状态。上一节中描述的 SSO 过程适用于 WEB SSO 架构。

下一个架构称为企业单点登录(E-SSO)。它与 WEB SSO 略有不同,这些变化对最终用户是透明的。用户只有 E-SSO 客户端的单一凭据,只能登录一次。E-SSO 处理相关应用的登录。不同之处在于,服务可以具有单独的身份验证凭据。由 E-SSO 客户端维护。此外,应用不需要知道 E-SSO 客户端。当组织希望为现有和已配置的系统提供 SSO 时,这种架构尤其常见。

SSO 旨在在单个组织内使用。联邦 SSO 架构提供跨不同组织信任的身份验证数据(通常是令牌)。该架构使用像 WS-Federation、OAuth 或 SAML 等这样的流行协议来传递令牌。SSO 架构在多个组织合作的情况下特别有用。

4. 优缺点

让我们分析一下 SSO 解决方案的优缺点。

优点:

  • 简化了使用多种服务的最终用户的登录过程
  • 减少忘记或无法使用凭证的情况。因此,它降低了服务台的成本和工作量
  • 简化凭据管理
  • 通过减少凭据暴露来提高安全性
  • 可以改善组织之间的整合与合作

缺点:

  • 当 SSO 服务关闭时,所有应用都可能无法访问
  • 实施 SSO 可能既费时又昂贵
  • 窃取 SSO 凭据使黑客能够访问所有相关系统
  • 必须强制使用强而复杂的密码
  • 一些 SSO 提供商与第三方共享数据。需要对提供商的条款和政策进行扎实的研究

5. 总结

本文中,我们详细讨论了单点登录。首先,我们介绍了 SSO 的基本原理和联邦身份的主要关注点。其次,我们介绍了 SSO 的一般工作流程。然后,我们简要介绍了不同的 SSO 架构。最后,我们概述了 SSO 解决方案的优缺点。