7.10. IDP Keys 子元素
IDP 的 Keys 子元素仅用于定义用来验证 IDP 签署的文档的证书或公钥。它的定义方式与 SP 的 Keys 元素 相同。但是,您只需要定义一个证书或公钥引用。请注意,如果 IDP 和 SP 分别由红帽构建 Keycloak 服务器和适配器实现,则不需要为签名验证指定密钥,如下所示。
可以将 SP 配置为从公布的证书获取 IDP 签名验证的公钥,只要 SP 和 IDP 由红帽构建的 Keycloak 实施。这可以通过删除 Keys 子元素中的所有签名验证密钥声明来实现。如果 Keys 子元素将保留为空,则可以完全省略它。然后,密钥由 SP 从 SAML 描述符自动获取,该位置是从 IDP SingleSignOnService 子元素 中指定的 SAML 端点 URL 中获取的位置。用于 SAML 描述符检索的 HTTP 客户端的设置通常需要其他配置,但可以在 IDP HttpClient 子元素 中配置。
还可以指定多个密钥来签名验证。这可以通过在 Keys 子元素中声明多个 Key 元素,该元素将 signing 属性设置为 true 来完成。这在轮转 IDP 签名密钥时很有用:当新的 SAML 协议消息和断言使用新密钥签名时,通常会有一个过渡周期,但之前密钥签名的密钥仍被接受。
无法将红帽构建的 Keycloak 配置为自动获取签名验证的密钥,并定义额外的静态签名验证密钥。