我在两个单独的容器中添加了 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 容器中时,这才不起作用。有人可以给我一些提示。
