wildfly 与 keycloak 403 禁止错误集成

wildfly integration with keycloak 403 forbidden error

我有一个与 keycloak 集成的应用程序。该应用程序在 wildfly 服务器上运行。我使用 web.xml 来验证 keycloak(作为登录配置)。除此之外,我使用 keycloak.json 文件,我在其中定义应用程序中的 keycloak 领域设置。 当我调用应用程序页面时,keycloak 登录页面打开,输入凭据后,它返回到 wildfly 并出现 403 禁止错误。

以前,同样的设置是有效的,但现在启用 ssl 后,我遇到了这个问题。

请帮我解决这个问题,是否需要任何其他额外的 ssl 设置。

如果启用 SSL 后登录失败,那是因为 SSL 证书不在信任库中,您可能会出现此异常 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

为此,您可以通过在 keycloak.json

中添加以下配置来禁用信任管理器
  {
    ...
    "disable-trust-manager": true
  }

如果这解决了问题,那么正确的做法是将证书添加到信任库并在 keycloak.json 文件中像这样指定它。

 {
    ...
    "truststore": "cacerts.jks",
    "truststore-password" : "password"
  }

问题出在 keycloak 配置上。为我的应用程序创建的角色没有作用域。将角色全范围启用后,问题得到解决。

由于设置在没有 SSL 的情况下工作,因此与范围相关的问题可能不会导致 403 错误。相反,可以先测试通过 IDP HTTPS 端口从客户端应用程序服务器到 IDP 服务器的连接(可以使用 telnet)。

也有可能是SSL证书验证问题,正如@Shiva的回答。补充一下,理想情况下,有效的 CA 证书可能不会产生信任问题。在这种情况下,可以检查您的 IDP 证书的 CA 支持的浏览器和 java 版本。只需升级到最新的 java 版本或将 CA 的根证书添加到您的默认信任库即可解决此类问题。这不需要对 keycloak.json 文件进行任何更改。

GoDaddy certificate issue example.

P.S: 由于我无法添加评论,所以在此处添加了这些要点。