SAML 2.0 身份验证请求的目的/用途是什么?

Ale*_*vik 1 single-sign-on opensaml saml-2.0

我已经浏览了类似的问题并阅读了几篇有关 SAML 2.0 的文章,但我仍然无法理解 SAML Auth Request。

我已经实施了多个基于 SAML 的 SSO 解决方案,其中我的公司是 IdP(身份提供商)。我们一直通过 SAML 响应将用户从我们的网站发送给第三方:

  1. 用户登录我们的网站。
  2. 用户单击我们网站上的特殊链接。
  3. 我们准备 SAML 响应 XML。
  4. 我们用我们的私钥对其进行电子签名。
  5. 将其作为 HTML 表单中的隐藏字段以及“RelayState”参数发送回用户的浏览器。
  6. 我们会自动将此表单发布到 SP(服务提供商)URL。

就是这样。

SAML 2.0 文章(例如,维基百科关于 SAML 2.0 的概述文章)表明我们缺少一个步骤:“SAML Auth Request”。看来 SP 需要通过首先向 IdP(我们)发送“SAML 身份验证请求”来启动 SSO,然后我们应该使用 SAML 响应来响应它。

SP 如何决定何时发起 SSO?SP 甚至不知道我们将按照他们的方式发送用户。用户当前已登录我们的网站,由用户决定何时单击该链接,这将“神奇地”在 SP 网站中对他们进行身份验证。

谢谢你!

PS 我知道 SAML 2.0 是“既定的行业标准”,但我使用它的次数越多,我就越觉得它有点矫枉过正。由于其复杂性,存在大量不同的不兼容的实现(根据我的经验)。每次我们与新合作伙伴进行 SSO 时,这都是一种痛苦。大公司通过销售“开箱即用”的 SAML 解决方案赚了一大笔钱,但没有人知道如何正确配置和排除故障,因此人们几乎被迫支付昂贵的承包商费用来完成所有设置。公司希望能够雇用低工资员工来支持那些过于复杂的 SAML 解决方案。当与第三方设置 SSO 时,我经常与那些不知道它是什么的人打交道,他们只是接受过单击按钮并通过电话向我阅读神秘错误消息的培训。这都是由于 SAML 被过度设计造成的。但是,嘿 - 有一个光明的一面:我得到了很好的报酬,因为我对 SAML 足够了解,至少可以让它发挥作用。:)

Ste*_*son 5

您正在使用规范中指定的所谓的主动响应,因此您不会“错过一个步骤”。它在SAML 配置文件规范 4.1.5 下指定

正常用例是用户尝试登录 SP,SP 将用户重定向到 IDP 进行身份验证。

您可以选择的一种实现是,您的门户只是将用户重定向到 SP。如果 SP 检测到用户没有会话,则 SP 会针对 IDP 启动正常 SSO