我与一位已经构建了本土引擎以生成SAML断言的客户合作。我们使用ForumSentry来验证断言,但摘要无法验证。我们已经有十几个其他客户向我们发送SAML断言,用于网络SSO,非常好,我确信ForumSys还有很多100个客户,对于ForumSentry来说也非常好。
我花了很多时间试图准确理解摘要的内容,并试图找到进入摘要算法的XML样本。我已经失败了,我希望得到一些帮助。
在我看来,唯一签名的数据是参考URI,而不是所有其他的"参数"断言,如主题,发行人等。这是正确的/我不明白的是什么?这是什么背景?如果正确,如何保护其他数据不被篡改?
是否假设Web SSO必须通过HTTPS来保护整个断言的完整性?
哪些数据准确形成了签名的数据?有人可以发布一个示例,包括签名数据的前后规范化。
任何其他背景信息都会很棒。
答案 0 :(得分:3)
SAML使用XML DSig进行签名。当SAML实体(断言,整个响应,元数据等......)被签名时,它通过使用XML Dsig套件中的特定算法来完成。
ID
节点的<assertion>
属性。XML DSig分两步完成:
ID
属性的引用。这意味着可以使用单个签名来验证多个XML的完整性,但在SAML中不使用该功能。
每个签名只包含一个对签名实体的ID
属性的引用,整个实体受签名保护。
如果您需要有关XML签名如何与SAML协同工作的更多详细信息,我建议您阅读SAML core spec部分5.4。