首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keycloak-gatekeeper:“aud”声明和“client_id”不匹配

Keycloak-gatekeeper:“aud”声明和“client_id”不匹配
EN

Stack Overflow用户
提问于 2018-11-30 10:20:55
回答 2查看 31K关注 0票数 42

设置aud声明以避免以下错误的正确方法是什么?

代码语言:javascript
复制
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"}

我通过硬编码声称与我的client_id相同的aud来解决这个错误消息。有没有更好的办法?

这是我的docker-compose.yml

代码语言:javascript
复制
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"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 16:07:37

对于最近的密钥罩版本4.6.0,客户id显然不再自动添加到访问令牌的受众字段'aud‘中。因此,即使登录成功,客户端也会拒绝该用户。为了解决这个问题,你需要为你的客户配置受众(比较文档2)。

在密钥罩中配置访问群体

  • Add realm or configure existing
  • Add Client my-
  • or use existing
  • Goto to the newly Add "Client scope“menu 1
    • Add Client scope 'good-service‘
    • 在”good-service“转到映射器选项卡
      • 创建协议映射器’my-
      • -Audience‘<代码>F112<代码>H113名称: my-app-audience
      • Choose映射器类型: Audience
      • Included客户端受众: my-app <代码>H218<代码>H119添加到访问令牌: on

  • 在"Clients“菜单中配置客户端my- scopes

在my-app设置中的

  • client Scopes选项卡中

  • 将可用的客户端作用域”good-scopes

“添加到分配的默认客户端服务

如果您有多个客户端,请对其他客户端重复上述步骤,并添加good-service作用域。这背后的意图是隔离客户端访问。颁发的访问令牌仅对目标受众有效。这在Keycloak的文档1,2中有详细的描述。

指向keycloak文档最新主版本的链接:

带有git标签的链接:

票数 129
EN

Stack Overflow用户

发布于 2019-04-28 07:28:42

这是由一个错误引起的:https://issues.jboss.org/browse/KEYCLOAK-8954

bug报告中描述了two workarounds,这两个are看起来与accepted answer here的功能基本相同,但可以应用于客户端作用域role,因此您不必将它们分别应用于每个客户端。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53550321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档