消化SAML断言中的哪些数据?

时间:2014-06-12 09:29:46

标签: saml digest

我与一位已经构建了本土引擎以生成SAML断言的客户合作。我们使用ForumSentry来验证断言,但摘要无法验证。我们已经有十几个其他客户向我们发送SAML断言,用于网络SSO,非常好,我确信ForumSys还有很多100个客户,对于ForumSentry来说也非常好。

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

XML DSig分两步完成:

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

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

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

如果您需要有关XML签名如何与SAML协同工作的更多详细信息,我建议您阅读SAML core spec部分5.4。