当使用 Keycloak 作为应连接到(非 Keycloak)身份提供商 (IdP) 的服务提供商 (SP) 时,如何在 Keycloak 中安装签名证书?
更准确地说,Keycloak 应该用作身份代理(如Keycloak 文档中所述),并且 Keycloak SP 和 IdP 之间的通信将通过 SAML 2.0 协议来促进。
Keycloak 文档包含有关如何安装 SSL 证书的信息以进行“正常”HTTPS 通信,例如在浏览器中,但我找不到有关安装要在与 IdP 的后端到后端 SAML 通信中使用的签名证书的任何信息。有谁知道该怎么做吗?
(也许Keycloak中只安装了一个证书,即该证书既用于SAML通信又用于其他非SAML Keycloak HTTPS通信?)
转至身份提供商 -> 您配置的 SAML IDP -> 导出。导出包含用于签名/加密的证书。您的 IDP 中必须至少有一个激活的签名/加密配置,否则您将在导出中看不到证书
创建领域时,keycloak 会生成一个
RSA-SHA256
证书,默认情况下,您配置的 IDP 经纪设置将使用该证书。
转到领域设置 -> 密钥,您将看到这个
RS256
(RSA) 和提供商 (rsa-generated
)
如果您需要另一个证书,请切换到“提供商”选项卡,添加密钥库,例如rsa。导入您的私钥和证书(均为 PEM 格式!)
回到概述,禁用 rsa 生成的提供程序,您新生成的提供程序应该是唯一一个类型为
RS256
的活动提供程序
如果您现在再次检查 IDP 的导出,导入的证书应在 XML 中使用
使用客户端所在的 keycloak(充当身份代理)领域的 X509 证书,即从领域的 SAML 元数据 url 获取证书,例如(对于在开发模式下本地运行的 keycloak):
http://localhost:8080/realms/REALM/protocol/saml/descriptor
此证书可以与客户端(服务提供商)详细信息一起存储在身份提供商中。