Keycloak:作为 docker 服务运行时令牌颁发者无效
Posted
技术标签:
【中文标题】Keycloak:作为 docker 服务运行时令牌颁发者无效【英文标题】:Keycloak: Invalid token issuer when running as docker service 【发布时间】:2020-10-16 11:57:28 【问题描述】:我有一个问题:
WWW-Authenticate Bearer realm="test", error="invalid_token", error_description="Invalid token issuer. Expected 'http://keycloak:8080/auth/realms/test', but was 'http://localhost:8080/auth/realms/test'"
我的设置:
application.yml
keycloak:
realm: test
resource: api
auth-server-url: http://keycloak:8080/auth
ssl-required: external
autodetect-bearer-only: true
cors: true
principal-attribute: preferred_username
credentials:
secret: 2b553733-8d5f-4276-8ace-17112ac7ac20
docker-compose.yml
keycloak:
image: jboss/keycloak:10.0.0
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
ports:
- "8080:8080"
networks:
- net
认证网址:http://localhost:8080/auth/realms/test/protocol/openid-connect/auth 令牌网址:http://localhost:8080/auth/realms/test/protocol/openid-connect/token
我明白问题存在的原因,但我不明白如何解决它。
【问题讨论】:
我相信你在本地运行 keycloak?然后在您的应用程序中将auth-server-url: http://keycloak:8080/auth
替换为auth-server-url: http://localhost:8080/auth
。
我必须使用keycloak.proxy-url
设置christophewillemsen.com/2021/06/08/…
【参考方案1】:
Keycloak 的默认主机名提供程序 (https://www.keycloak.org/docs/latest/server_installation/#default-provider) 有一个名为 frontendURL 的属性,应将其设置为公开 Keycloak 的公共 URL。
设置 frontendURL 可确保所有前端渠道 URL,如 issuer、authorization_endpoint 使用配置的值作为 URL 中的主机名,而后端渠道 URL 在请求中继续使用主机名。
【讨论】:
以上是关于Keycloak:作为 docker 服务运行时令牌颁发者无效的主要内容,如果未能解决你的问题,请参考以下文章
Docker(Spring Boot 或 Thorntail)和 Keycloak
Keycloak:从内部 docker 容器运行时令牌颁发者无效
Keycloak docker HTTPS-REQUIRED with nginx ssl