单点登录机制(SSO)允许用户登录应用程序一次,并访问所有相关的系统,而不需要单独登录它们。

由于 SSO,用户只需登录一次即可使用服务,并自动登录到所有相关应用程序。SSO 消除了单独登录它们的需要。此外,用户不需要存储或记住多个凭据。

单点登录仅与身份验证过程相关。它的任务是验证用户的身份,并在相关应用程序之间共享该信息。

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

通常,有一个中心域来标识用户并共享他们的会话数据,例如,以JWT的形式。让我们大致描述一下SSO过程。

用户进入 domain1

SSO 系统使用包含会话数据的参数(例如 JWT)重定向回 domain1

上面的方法是最普遍的一种。它可以根据实现的SSO配置和体系结构而有所不同。下面我们可以在图表中看到前面描述的过程:

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

这种架构通常使用 cookie 来跟踪用户的身份验证状态。前面介绍的 SSO 流程适用于 WEB SSO 架构。

另一种架构称为企业单点登录(E-SSO)。它与 WEB SSO 略有不同,并且更改对最终用户是透明的。用户拥有 E-SSO 客户端的单一凭据,并且仅登录一次。 E-SSO 处理登录到相关应用程序。不同之处在于服务可以具有单独的身份验证凭据。此外,应用程序不需要了解 E-SSO 客户端。当组织想要为已经存在和配置好的系统提供SSO时,这种架构通常尤其适用。

一些SSO提供者与第三方共享数据。需要对供应商的条款和政策进行深入研究。