7

这是SP元数据的一部分。

参考:OASIS 安全断言标记语言 (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 发送,则提供传输层加密。我们还需要在这里包含加密证书吗?

4

1 回答 1

8

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

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

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

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

于 2014-09-10T18:21:20.053 回答