我有一个与keycloak集成的应用程序。该应用程序在wildfly服务器上运行。我使用web.xml来验证keycloak(作为Login config)。除此之外,我使用keycloak.json文件,我在应用程序中定义keycloak领域设置。 当我调用应用程序页面时,会打开keycloak登录页面,在输入凭据后,它会返回到wildfly,出现403 forbidden错误。
以前,相同的设置正在运行,但现在启用ssl后,我正面临这个问题。
请帮我解决问题,是否需要为ssl进行任何其他额外设置。
答案 0 :(得分:3)
如果启用SSL后登录失败,那将是因为SSL证书不在信任库中,您可能会遇到此异常javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
为此,您可以通过在keycloak.json中添加以下conf来禁用信任管理器
{
...
"disable-trust-manager": true
}
如果这解决了问题,那么正确的方法是将证书添加到信任库并在keycloak.json文件中指定它。
{
...
"truststore": "cacerts.jks",
"truststore-password" : "password"
}
答案 1 :(得分:1)
由于设置在没有SSL的情况下工作,因此与范围相关的问题可能不会导致403错误。相反,可以首先测试通过IDP HTTPS端口从客户端应用程序服务器到IDP服务器的连接(可以使用telnet)。
否则,它可能是SSL证书验证问题,正如@Shiva所回答的那样。只是为了添加它,理想情况下,有效的CA证书可能不会产生信任问题。在这种情况下,可以检查支持的IDP证书CA的浏览器和Java版本。只需升级到最新的Java版本或将CA的根证书添加到默认信任库即可解决此类问题。这不需要对keycloak.json文件进行任何更改。
GoDaddy certificate issue example
P.S:由于我无法添加评论,所以在这里添加了这些要点。
答案 2 :(得分:0)
问题出在keycloak配置上。为我的应用程序创建的角色没有范围。在将角色启用到完整范围后,问题得到了解决。
答案 3 :(得分:0)