是否有必要验证 SAML 断言

Mat*_*his 4 authentication validation saml

作为服务提供商,我试图通过从身份提供商 (IdP) 获取 SAML 断言 (SAML 1.0) 来验证我页面上的用户。执行以下步骤(非常抽象):

  1. 用户访问我的页面
  2. 我将用户重定向到用户进行身份验证的 IdP
  3. 我得到一个 SAML Artifact,我用它从 IdP 请求 SAML 断言
  4. IdP 将 SAML 断言直接发送回我的页面
  5. ?

这个过程是否足以确保用户身份验证是合法的?我是否只是在步骤 5 中授予用户访问我的服务的权限,还是必须通过验证断言中的签名来确保 SAML 断言有效?如果是这样,我该怎么做?我是否错过了任何其他步骤?

Ste*_*son 5

我个人的简短建议:如果 IDP 已经签署了断言,那么验证它的关键应该已经在元数据中,验证它应该是一个简单的操作,并且具有很大的安全优势。所以就这么做吧。

然而......(长答案)总是很难说什么是安全的,什么是不安全的。这完全取决于您需要网站的安全程度。使用断言是使其更安全的一种方法。

这样用户本身就无法编辑断言。签名是更安全的一步,可确保断言来自 IDP 并且未被更改。

如果没有它,攻击者就有可能冒充 IDP,将工件重定向到其自己的服务器。然后,攻击者可以用他想要的任何断言进行响应。另一种情况是,如果断言不受签名保护,则它可能会在互联网上传输时在某个地方发生更改。

对于任何安全控制,您都必须权衡用户身份验证对您的重要性以及规避它的人的后果。


And*_*bel 5

不,如果您使用的是工件解析协议,则如果您信任传输,则不需要验证断言的签名。如果传输是 https url 并且您的服务器具有一组正确的可信根证书,则通常可以信任传输。

细节

SAML2 标准(核心,第 5.3 节)规定,如果断言包含在另一个已签名的元素中,则应将其视为正确签名。在工件结果的情况下,这意味着覆盖整个工件解析响应消息的签名足以考虑要签名的断言。轮廓。

查看 WebSSO 配置文件,它指出对于工件解析(配置文件,4.1.4.4)“使用工件解析配置文件取消引用工件必须相互验证、完整性保护和机密。”。恕我直言,正确设置的 https 连接涵盖了哪些内容。

但是,如果您以完整的管理方式执行 SAML2,您还应该为您的特定设置提供一个部署配置文件,该配置文件明确定义了 https 连接是否可信。