我正在使用WildFly应用程序服务器,该服务器在本地计算机上托管简单的Frontend-Backend组合。前端通过Keycloak JS适配器进行保护,后端被禁止使用Keycloak WildFly适配器。
我已经正确放置了keycloak.json(在WEB-INF文件夹中),并且我的web.xml看起来像这样:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<module-name>restservice</module-name>
<display-name>RESTful Service</display-name>
<security-constraint>
<web-resource-collection>
<web-resource-name>Brokerservice</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>default</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>AuthInterface</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>KEYCLOAK</auth-method>
<realm-name>this is ignored currently</realm-name>
</login-config>
<security-role>
<role-name>default</role-name>
</security-role>
</web-app>
部署进行得很顺利,我可以访问并登录到该部署中托管的Frontend,但是当我尝试从后端请求某些内容时,我会收到401 Unauthorized。承载令牌有效,并按照Keycloak文档的指示发送给服务。同时,控制台读取
Error when sending request to retrieve realm keys: org.keycloak.adapters.HttpClientAdapterException: IO error
完整的服务器日志可用here。由于此问题仅与我的本地REST服务有关(我可以在公司网络中从其他受Keycloak保护的服务中连接和检索数据),因此我怀疑这与我的WildFly配置有关。目前,它是全新安装,仅通过命令行添加并启用了Keycloak适配器。
感谢任何帮助。
答案 0 :(得分:0)
我的朋友们,我找到了俩!我确实是一个本地配置问题,但不是在WildFly中,而是在我的Java Keystore中。公司SSL证书必须添加到cacerts
密钥库中,该密钥库是与JAVA_HOME
变量(在我的情况下为jdk1.8.0_181)关联的Java发行版中的一部分。具体来说,您可以使用以下命令进行设置:
keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts" -alias [alias] -storepass [password] -file [path/to/your/certificate]
请注意,如果找不到“ keytool”,请导航至JDK的bin并从此处执行命令。执行原点在这里无效。