ark*_*diy 13 keycloak keycloak-gatekeeper
设置aud
声明以避免下面的错误的正确方法是什么?
unable to verify the id token {"error": "oidc: JWT claims invalid: invalid claims, 'aud' claim and 'client_id' do not match, aud=account, client_id=webapp"}
Run Code Online (Sandbox Code Playgroud)
我有点解决这个错误信息,硬编码aud
声称与我的相同client_id
.有没有更好的方法?
这是我的docker-compose.yml
:
version: '3'
services:
keycloak-proxy:
image: "keycloak/keycloak-gatekeeper"
environment:
- PROXY_LISTEN=0.0.0.0:3000
- PROXY_DISCOVERY_URL=http://keycloak.example.com:8181/auth/realms/realmcom
- PROXY_CLIENT_ID=webapp
- PROXY_CLIENT_SECRET=0b57186c-e939-48ff-aa17-cfd3e361f65e
- PROXY_UPSTREAM_URL=http://test-server:8000
ports:
- "8282:3000"
command:
- "--verbose"
- "--enable-refresh-tokens=true"
- "--enable-default-deny=true"
- "--resources=uri=/*"
- "--enable-session-cookies=true"
- "--encryption-key=AgXa7xRcoClDEU0ZDSH4X0XhL5Qy2Z2j"
test-server:
image: "test-server"
Run Code Online (Sandbox Code Playgroud)
rfs*_*rfs 44
使用最近的keycloak版本4.6.0,客户端ID显然不再自动添加到访问令牌的受众字段"aud"中.因此,即使登录成功,客户端也会拒绝用户.要解决此问题,您需要为客户配置受众(比较doc [2]).
如果您有多个客户端,请重复其他客户端的步骤并添加良好服务范围.这背后的意图是隔离客户端访问.发布的访问令牌仅对目标受众有效.这在Keycloak的文档[1,2]中有详尽的描述.
如果像我一样,你想自动化 keycloak 配置,你可以使用 kcadm
/opt/jboss/keycloak/bin/kcadm.sh \ 创建客户端/d3170ee6-7778-413b-8f41-31479bdb2166/protocol-mappers/models -r your-realm \ -s 名称=受众映射\ -s 协议=openid-connect \ -s protocolMapper=oidc-audience-mapper \ -s config.\"included.client.audience\"="你的听众" \ -s config.\"access.token.claim\"="true" \ -s config.\"id.token.claim\"="false"
归档时间: |
|
查看次数: |
6555 次 |
最近记录: |