0

我在两个单独的容器中添加了 keycloak 和 spring-boot rest API。我的应用程序正在使用 keycloak 采用者(keycloak-spring-boot-starter)。对 keycloak 的令牌生成调用工作正常,但是当我尝试重用此令牌并从邮递员通过我的 spring-boot rest API 发送请求时,我收到 401 未经授权的响应。我验证它并在没有 docker 容器的情况下运行我的应用程序,然后它可以使用令牌正常工作。我尚不了解的配置似乎有些不匹配。

这是我的springboot应用程序配置:

server.port                         = 8001
keycloak.realm                      = hardware-shop
keycloak.auth-server-url            = http://keycloak:8089/auth
keycloak.ssl-required               = external
keycloak.resource                   = hardware-api
keycloak.credentials.secret         = 9dc79da5-1b61-4a26-a72b-4f5ff1cd5448
keycloak.use-resource-role-mappings = true
keycloak.bearer-only                = true

我正在从 docker-compose 运行这些容器,如下所示:

version: '3'
services:
 smart-hardware-api:
        image: abc/simple-app:v4
        ports:
            - 8001:8001
        networks:
            - spring-cloud-network 
 keycloak:
     image: abc/keycloak-custom:keycloak-with-realm
     restart: on-failure
     command:
      - "-b"
      - "0.0.0.0"
      - "-Dkeycloak.migration.action=import"
      - "-Dkeycloak.migration.provider=dir"
      - "-Dkeycloak.migration.dir=/config/"
      - "-Dkeycloak.migration.strategy=IGNORE_EXISTING"
     volumes:
       - ./config:/config/
     environment:
       - KEYCLOAK_USER=admin
       - KEYCLOAK_PASSWORD=admin
       
     ports:
       - "8089:8080"
     networks:
       - spring-cloud-network

networks:
    spring-cloud-network:
        driver: bridge

keycloak 中的客户端配置是这样的:

在此处输入图像描述

我的邮递员收藏是这样的:

在此处输入图像描述 我在 /etc/hosts 文件中映射了 127.0.0.1 smart-hardware-api 在此处输入图像描述

应用程序控制台上没有有趣的日志,只有当我将应用程序添加到 docker 容器中时,这才不起作用。有人可以给我一些提示。

4

0 回答 0