【问题标题】:SAML 2.0 SP metadata: Purpose and the use of certificateSAML 2.0 SP 元数据:证书的目的和使用
【发布时间】:2014-11-04 11:40:41
【问题描述】:

这是SP元数据的一部分。

参考:Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0

...   
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
        <ds:X509Certificate>
        </ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
        <ds:X509Certificate>
        </ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
...

在签名和加密证书中选择相同(或不同)的证书有什么好处吗?

在这里包含签名证书的目的是什么?

如果消息通过 https 发送,则提供传输层加密。我们还需要在此处包含加密证书吗?

【问题讨论】:

    标签: metadata saml-2.0 service-provider


    【解决方案1】:

    在 SAML 2.0 Web SSO 的元数据提供者通常声明相同的证书用于签名和加密使用。

    在某些用例中,使用不同的键是有意义的——例如当 SP 本身不应该能够解密 IDP 提供的数据(例如 nameID 或属性)时,但这只能由 Assertion 的最终接收者完成;或者当与实际创建 SAML 消息的一方不同的一方提供创建断言的内容时 - 但这些用例很少见,并且与 Web SSO 以外的其他配置文件更相关。

    包含签名证书是为了告知元数据用户如何验证元数据发行者提供的消息。例如,当 SP 收到来自 IDP 的消息时,它会使用 IDP 元数据中定义的签名证书来验证消息是否由 IDP 创建并且在传输过程中未被篡改。

    如果加密是在传输层完成的,并且您没有在消息级别(例如整个消息、断言、nameID 或属性)执行任何加密,您通常不需要包含加密证书。

    【讨论】:

    • 这不太准确。签名证书由 IdP 使用。但加密证书由依赖方提供,IdP 使用 RP 的公共证书的公钥进行数据加密。签名是为了防止篡改,而加密是为了确保没有其他 RP 能够使用相同的令牌。这有时是有道理的,例如当不同的代币被发行给不同的 RP 时。然后有一个来自 IdP 的证书和可能来自 RP 的可选多个证书。
    • IDP 和 SP 都使用签名证书,而不仅仅是 IDP。此外,IDP 和 SP 都可以使用加密证书——SP 可以向 IDP 发送 SAML 消息(例如 AuthnRequest)并使用其元数据中定义的加密证书对其进行加密,IDP 可以向 SP 发送加密消息。加密用于提供消息机密性,其主要目的不是防止其他 SP 使用令牌 - SAML 有其他技术可以防止将 SAML 消息传递给非预期的收件人 - 例如 Audience 和 Destination 字段。
    • 真的,真的。但是,您的“提供商通常使用同一对证书密钥进行签名和加密”仍然困扰着我。这句话缺乏精确的“签名响应和请求加密”(因为使用相同密钥对响应进行签名和加密没有意义)。
    • 这里讨论的问题和答案是 SAML 元数据的上下文,因此“使用相同的密钥”意味着“在 SAML 元数据文档中使用”。从公钥密码学的基本知识来看,您不使用自己的密钥加密消息这一事实应该是显而易见的,因为在这种情况下,加密器将是唯一能够解密消息的实体。但我会更改措辞以免混淆任何人,谢谢您的评论。
    • 实际上已经证明你可以在数据包传输时subvert XML signatures and inject additional content。我传统上会强制进行断言加密,如果我觉得值得授权的话,可能还会进行响应签名。
    猜你喜欢
    • 2020-02-10
    • 2018-04-19
    • 2023-03-19
    • 2013-11-30
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2016-10-04
    相关资源
    最近更新 更多