SAML 2.0 SP元数据:证书的用途和使用

ton*_*919 6 metadata service-provider saml-2.0

这是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>
...
Run Code Online (Sandbox Code Playgroud)

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

在此处包括签署证书的目的是什么?

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

Vla*_*fer 7

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

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

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

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

  • IDP和SP都使用签名证书,而不仅仅是IDP。此外,IDP和SP都可以使用加密证书-SP可以向IDP发送SAML消息(例如AuthnRequest),并使用其元数据中定义的加密证书对其进行加密,并且IDP可以向SP发送加密的消息。加密用于提供消息机密性,其主要目的不是防止其他SP使用令牌-SAML具有防止SAML消息传递到意外收件人的其他技术,例如“受众”和“目标”字段。 (2认同)