当前位置: 首页 > 知识库问答 >
问题:

受KeyCloak保护的WildFly REST服务返回未经授权的401

龙晟睿
2023-03-14

我正在使用一个WildFly应用服务器,它在我的本地机器上托管一个简单的前端-后端组合。前端通过Keycloak JS适配器保护,后端使用Keycloak WildFly适配器。

<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>
Error when sending request to retrieve realm keys: org.keycloak.adapters.HttpClientAdapterException: IO error

完整的服务器日志可以在这里获得。由于此问题仅限于本地REST服务的occrus(我可以从公司网络中其他受KeyCloak保护的服务连接和检索数据),我怀疑这是WildFly配置的问题。目前,它是一个干净的安装,只有Keycloak适配器添加和通过命令行启用。

任何形式的帮助都很感激。

共有1个答案

赫连实
2023-03-14

我的朋友们,我找到了答案!我确实是一个本地配置问题,但不是在WildFly中,而是在我的Java Keystore中。必须将企业SSL证书添加到CACERTS密钥库中,该密钥库是与JAVA_HOME变量相关联的Java发行版的一部分(在本例中是JDK1.8.0_181)。具体地说,您可以使用此命令来设置它:

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并从那里执行命令。执行原点在这里没有影响。

 类似资料:
  • 我正在使用postman,并尝试通过http://localhost:8180/auth/admin/realms/demo/users/{userID}更新用户的配置文件,但收到响应。 通过http://localhost:8180/auth/admin/realms/demo/users/{userID}发送带有Json内容类型和用户信息的Put请求。 不幸的是,我已经连续收到了401个回复。

  • 问题内容: 我正在使用GCM服务从服务器推送信息。如果我使用浏览器密钥,它将成功消息显示为: {“ multicast_id”:4849013215736515938,“ success”:1,“ failure”:0,“ canonical_ids”:0,“ results”:[{“ message_id”:“ 0: 1348742583011905%2adac3a0f9fd7ecd“}]},

  • 我们正在开发一个使用Angular和Spring的应用程序。我们从后端公开一些 REST Web 服务。 我知道强烈建议REST Web服务应该是无状态和无会话的,因此我们正在开发无状态和无会话的Web服务。 我们如何保护web服务不被未经授权的客户端调用。所以我想从Angular应用程序调用这些服务。 我知道几乎不可能阻止来自Selenium等某些工具的调用,但这没关系,因为该客户端也是Angu

  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

  • 所以,我试图用Tweepy喜欢一个推文,但是这个错误正在发生: 有什么想法吗?

  • 我使用spring ide在本地机器嵌入式apache服务器上部署了spring boot web应用程序,并访问了一个带有错误令牌的url,在这种情况下,它会返回未经授权的访问错误401和托管异常处理抛出的特定错误消息,而如果我在独立但相同的apache服务器上部署相同的应用程序,它会给我500个内部服务器错误而不是401或任何其他服务器端错误。 我捕获的日志只有以下一行不同: 下面是我用来处理