【问题标题】:In SAML Response should we sign Response or Assertion在 SAML 响应中,我们应该签署 Response 还是 Assertion
【发布时间】:2021-08-25 02:52:21
【问题描述】:

在向 SP 返回 SAML 响应时,AzureAD、Okta、Onelogin、GSuite 等大多数 IdP 都有以下关于签名的选项:

  • 签名回复
  • 签署断言
  • 签署响应和断言

并且无需任何配置,对于大多数 IdP 来说,签名的默认设置是只对 Assertion 进行签名。

下面是来自 AzureAD 的 SAML 响应示例(默认签名选项是签名断言)。断言是完整性保护的,不能被篡改。但是除了 Assertion 之外的字段,Destination InResponseTo Issuer,可以在不知情的情况下被篡改或添加/删除!

所以我的问题是:

  1. 为什么有3种签名? (响应、断言、响应和断言)
  2. 在哪个用例中,我们应该选择对整个 Response 签名、对 Assertion 签名还是对 Response 和 Assertion 都签名?
  3. 仅通过签署断言(大多数 IdP 的默认设置),我们是否会暴露于任何漏洞?

【问题讨论】:

  • @AkshayGaonkar 感谢您的评论!这很清楚我的大部分问题!我仍然想知道我们应该何时选择签署 Response 或 Assertion。如果它有一些最佳实践,那就太好了。您可以将上述评论作为答案吗?我会接受的。另外,引用它以防引用的软链接消失 404。

标签: saml saml-2.0 signature assertion xml-signature


【解决方案1】:

检查Scott'sSOF post的答案

遵循 SAML 2.0 规范的 IdP 的唯一要求是 对断言进行数字签名(参见 http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf 第 4.1.3.5 节)。这足以判断来自 IdP 的 SSO 操作是否应该受到与其联合的 SP 的信任。

签署外部响应是可选的。有一定的安全性 好处,例如防止消息插入或修改 (见第 6.1.3/6.1.5 节 http://docs.oasis-open.org/security/saml/v2.0/saml-sec-consider-2.0-os.pdf) - 但在实践中,它经常被省略以代替依赖 SSL/TLS。

【讨论】:

  • 感谢您的回答!这很清楚我的大部分问题!我仍然想知道我们什么时候应该选择签署 Response 或 Assertion。如果它有一些最佳实践,那就太好了。
  • w3.org/TR/xmldsig-bestpractices。它可能不会专门回答您的问题,但它在处理 XML 签名时记录了所有最佳实践。
  • 在上述链接中......第 3.2.1 节......最佳实践 15:应用程序:除非不切实际,否则签署文件的所有部分......如果服务提供商支持,请始终签署整个 SAMLResponse。
【解决方案2】:

由于断言是 SAML 响应的一部分,因此仅对 SAML 响应进行签名就足够了。这样您就可以保护/签署整个 SAML 身份验证响应。

通过签署断言,您只需签署响应中的属性声明。

通过仅签署断言,我认为我们不会暴露任何漏洞,因为重要信息在 SAML 响应中的断言中。

大多数 IDP 都有配置选项来根据 SP 中的要求处理签名。此外,如果您正在构建自己的 IDP,您可以实施它来支持

【讨论】:

  • 是的,我对签署 SAML 响应有同样的想法。只是想知道为什么存在签名断言:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多