SAML身份验证的可视化解释

哥们看看码农 2024-09-07 22:44:49

SAML(安全断言标记语言)是企业中最常用的身份验证协议和 SSO 解决方案。

什么是单点登录?

简而言之,它相当于我们在互联网应用程序中看到的“使用 Google 登录”或“使用 Facebook 登录”按钮的企业版按钮。我们最初在 Google 或 Facebook 等中注册一个帐户,然后使用该帐户登录其他应用程序,如 Spotify、Netflix、Zoom 等。我们这样做是为了避免维护多个用户名/密码。同样,企业维护单一的用户管理系统,员工使用其公司帐户登录第三方服务,如 Salesforce、Workday、Expensify 等,而无需创建单独的帐户或记住多个密码。这称为 SSO(单点登录),SAML 是事实上的企业 SSO 解决方案。

参与者

SAML 身份验证流程涉及 3 个主要参与者:

身份提供商 (IdP)

这就是我们前面讲的集中式用户管理系统。该服务器负责验证用户身份并将用户详细信息(例如电子邮件地址、姓名、部门等)传递给服务提供商。流行的身份提供商有 Azure AD、Auth0、Onelogin、Okta、G Suite 等。

服务提供商 (SP)

这是信任 IdP 并希望使用它进行身份验证的应用程序。示例:Salesforce、Workday、Expensify、$YOUR_AWESOME_APP 等

Principal

这是尝试通过 IdP 登录 SP 的用户。

身份验证流程

用户访问SP的常见方式有两种:

IdP 发起登录:

用户首先访问 IdP,然后会看到他们有权访问的 SP 列表。从该列表中选择 SP 后,他们将被重定向到该 SP。

SP发起登录:

在这个流程中,用户首先访问SP的网站。如果用户与 SP 没有活动会话,则用户将被重定向到 IdP 进行身份验证。成功登录后,用户将被重定向回 SP。我们将详细讨论这个流程。

SP发起的流程:

我们从用户的角度来谈谈流程。

用户访问 SP 的网站。如果用户未登录,则会显示“使用 SSO 登录”按钮单击登录按钮后,用户将被重定向到 IdP 的网站,并要求他们提交凭据成功登录后,用户将被重定向回 SP 的网站,他们可以在其中执行工作

现在,让我们放大一点,了解幕后发生的事情:

SP 检查活动会话SP 向 IdP 发送 AuthnRequestIdP 对用户进行身份验证IdP 向 SP 发送 SAML 断言SP 创建会话并登录用户SP 检查活动会话

SAML 不维护会话,因此 SP 需要为每个经过身份验证的用户维护会话。当用户访问 SP 网站时,它会检查用户是否与其有活动会话。如果存在活动会话,用户可以进入网站,否则会显示“使用 SSO 登录”按钮。

SP 向 IdP 发送 AuthRequest

当用户单击“使用 SSO 登录”按钮时,SP 会生成一条名为“AuthnRequest”的 XML 消息,其中包含有关发送请求的详细信息(颁发者)、用户经过身份验证后重定向到的位置(断言消费者服务 url)以及安全措施(ID、IssueInstant)。下面是AuthnRequest XML 示例。

此 XML 被编码为 url 安全字符串,作为查询参数嵌入到对 IdP 的请求中,并且用户被重定向到此 IdP url:https://idp.com/SAML2/SSO/Redirect?SAMLRequest=EncodedAuthnRequest

IdP 对用户进行身份验证

IdP 维护自己的有关用户的会话,如果用户存在活动会话,则用户将被重定向到 SP。如果会话不存在,系统会要求用户输入其凭据。 IdP 可以选择如何对用户进行身份验证 - 可以是用户名/密码、TOTP、MFA 等。

IdP 向 SP 发送 SAML 断言

用户成功通过身份验证后,IdP 会将名为“SAML 断言”的 XML 消息发送回 SP 的断言消费者服务 URL。其中包含用户的详细信息,例如姓名、电子邮件、部门等以及安全措施(InResponseTo、IssueInstant)。它还经过数字签名,因此 SP 可以相信该消息确实来自 IdP 并将用户登录到其系统。

SP 创建会话并登录用户

用户现已成功登录SP网站! SP 将为用户创建一个会话,以便用户下次访问该网站时可以自动登录。

结论

希望这篇文章能够为您提供 SAML 身份验证以及 SSO 工作原理的高级概述。

0 阅读:3

哥们看看码农

简介:感谢大家的关注