【问题标题】:What data in a SAML assertion is digested?SAML 断言中的哪些数据被消化?
【发布时间】:2014-06-12 09:29:45
【问题描述】:

我正在与一个客户合作,该客户构建了一个本地引擎来生成 SAML 断言。我们正在使用 ForumSentry 来验证断言,但摘要无法验证。我们已经有十几个其他客户向我们发送 SAML 断言,对于 Web SSO,非常好,而且我相信 ForumSys 有很多客户,对于 ForumSentry 也运行良好。

我花了很多时间试图准确地理解摘要的构成,并试图找到进入摘要算法的 XML 样本。我失败了,希望能得到一些帮助。

在我看来,唯一签名的数据是参考 URI,而不是断言的所有其他“参数”,例如主题、颁发者等。这是正确的/我不明白什么?这是什么背景?如果正确,如何保护其他数据不被篡改?

是否假设 Web SSO 必须通过 HTTPS 来保护整个断言的完整性?

哪些数据准确地构成了已签名的数据?有人可以发布一个示例,包括已签名数据的规范化前后的示例。

任何其他背景信息都会很棒。

【问题讨论】:

  • 引用 SAML 技术概述SAML defines a number of security mechanisms that prevent or detect such attacks. The primary mechanism is for the relying party and asserting party to have a pre-existing trust relationship, typically involving a Public Key Infrastructure (PKI). Where message integrity and message confidentiality are required, then HTTP over SSL 3.0 or TLS 1.0 is recommended. When a relying party requests an assertion from an asserting party then bi-lateral authentication is required and the use of SSL 3.0 or TLS 1.0 using server and client authentication are recommended.

标签: saml digest


【解决方案1】:

SAML 使用 XML DSig 进行签名。当一个 SAML 实体(一个断言、一个完整的响应、元数据等)被签名时,它是通过使用 XML Dsig 套件中的特定算法来完成的。

  • 签名的引用必须指向签名实体的 ID。对于作为 <assertion> 节点的 ID 属性的签名断言。
  • 使用的规范化算法必须是独占规范化。这不会影响实际的 XML 内容,它是加密库使用的 XML 解析器的指令,可确保空格差异等不会影响签名数据的有效性。

XML DSig 分两步工作:

  • 首先为签名中的每个引用计算一个哈希值。对于 SAML 签名,应该只有一个对封闭实体的 ID 属性的引用。
  • 然后在包含哈希的 XML 中计算加密签名。

这意味着单个签名可用于验证多个 XML 片段的完整性,但在 SAML 中不使用该功能。

每个签名都包含一个对签名实体的ID 属性的引用,整个实体都受到签名的保护。

如果您需要有关 XML 签名如何与 SAML 一起使用的更多详细信息,我建议您阅读 SAML core spec 第 5.4 节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2018-11-09
    • 2017-06-26
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多