将 Keycloak 用作 WSO2 身份服务器的联合身份提供者时出现 SSL 错误

Posted

技术标签:

【中文标题】将 Keycloak 用作 WSO2 身份服务器的联合身份提供者时出现 SSL 错误【英文标题】:SSL error when using Keycloak as a federated identity provider with WSO2 Identity Server 【发布时间】:2021-05-06 12:38:18 【问题描述】:

我正在独立模式下运行 Keycloak 实例。我已将 Keycloak 配置为 WSO2 IS 中的 OIDC 联合 IdP,并将 WSO2 IS 配置为 Keycloak 中的客户端。我还有一个正在运行的应用程序,它连接到 WSO2 IS 并使用 Keycloak 进行联合身份验证。 我可以毫无问题地登录应用程序,但是当我尝试从应用程序注销时,Keycloak 中会发生注销,但 Keycloak 控制台中会出现以下错误,

[org.keycloak.services] (default task-17) KC-SERVICES0057: Logout for client 'WSO2-IS' failed: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我尝试创建一个密钥库standalone/configuration/application.keystore 并将 WSO2 IS 的证书导入其中,并将 Keycloak 的证书导入 WSO2 IS 密钥库。但它没有用。 (请注意,即使在服务器启动后,application.keystore 也不在 standalone/configuration/ 位置。)

我也按照guide 设置了一个密钥库,但似乎没有任何效果。

我在这个设置中有什么遗漏吗?

【问题讨论】:

可能缺少一些中间 CA 证书。这是 Let's Encrypt 用户的常见问题。他们不导入/配置中间证书,因此可以验证正确的验证路径。 感谢您的快速回复。在您发表评论后,我检查了密钥库中的证书,似乎 WSO2 IS 证书未正确导入。现在问题解决了。 【参考方案1】:

在检查 Keycloak 的信任库中的证书后修复了该问题。

原因:WSO2 IS 的证书未正确导入,信任库未正确配置。

【讨论】:

以上是关于将 Keycloak 用作 WSO2 身份服务器的联合身份提供者时出现 SSL 错误的主要内容,如果未能解决你的问题,请参考以下文章

Spring SAML 与 WSO2 身份服务器集成,无法识别 SAML 消息

将AngularJS应用程序与WSO2身份服务器集成

Keycloak社交登录休息api

WSO2:如何将一个api的响应用作另一个API的输入参数

WSO2 身份服务器 - 将数据库更改为 PostgreSQL 后,无法看到数据库表 UM_USER 中的用户

如何在同一服务器上配置WSO2 AS和WSO2 AM与身份服务器?