SAML 请求中缺少 xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

Posted

技术标签:

【中文标题】SAML 请求中缺少 xmlns:ds="http://www.w3.org/2000/09/xmldsig#"【英文标题】:Missing xmlns:ds="http://www.w3.org/2000/09/xmldsig#" in a SAML request 【发布时间】:2013-06-08 21:37:21 【问题描述】:

有来自两个不同系统的 SAML 身份验证请求。一个成功了,另一个一直失败。

我注意到失败的标签在 14 个标签中有 13 个缺少 xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:Reference URI="#_8dea83ff20a914b6aefd05b2ae61a4556e3e" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignatureValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Certificate xmlns:ds="http://www.w3.org/2000/09/xmldsig#">

失败的请求仅在 ds:Signature 标记中具有此参数。

    我想知道没有这个参数会不会 请求无效。 在 SAML 2.0 中是否需要此参数 (xmlns="urn:oasis:names:tc:SAML:2.0:protocol")?

【问题讨论】:

您最好在根元素中包含 xmlns:ds="w3.org/2000/09/xmldsig#"。 【参考方案1】:
    命名空间声明在***元素上就足够了,因为它是由子元素继承的。在每个元素上声明它仍然有效,但没有必要。 这不是 SAML 2.0 本身的要求,而是有效 XML 的要求。由于 SAML 2.0 架构依赖于 sml-dsig 架构,因此必须在签名标签或***元素之一上声明命名空间。

验证断言时是否有特定的错误消息?

【讨论】:

以上是关于SAML 请求中缺少 xmlns:ds="http://www.w3.org/2000/09/xmldsig#"的主要内容,如果未能解决你的问题,请参考以下文章

<KeyInfo> 中缺少 ADFS SAML 前缀 ds

SAML 元数据与 SAML 请求和响应的区别

在请求标头中检索 SAML 断言属性的问题

在 Spring Security SAML 身份验证请求中配置 POST ProtocolBinding

Discord OAuth2:'请求中缺少“代码”'

我可以提供要在 SAML 请求中使用的用户名吗? (广告FS)