Keycloak-gatekeeper: претензии 'aud' и 'client_id' не совпадают - PullRequest
0 голосов
/ 30 ноября 2018

Как правильно установить утверждение 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"}

Я как-то обошел это сообщение об ошибке, жестко закодировав 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"

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Это связано с ошибкой: https://issues.jboss.org/browse/KEYCLOAK-8954

В отчете об ошибке описано два обходных путей , оба из которых, по-видимому, в основном одинаковывещь как принятый ответ здесь , но может применяться к клиентской области role, поэтому вам не нужно применять их к каждому клиенту индивидуально.

0 голосов
/ 05 декабря 2018

В последней версии keycloak 4.6.0 идентификатор клиента, очевидно, больше не добавляется автоматически в поле аудитории «aud» токена доступа.Поэтому, даже если вход в систему успешен, клиент отклоняет пользователя.Чтобы это исправить, вам нужно настроить аудиторию для ваших клиентов (сравните документ [2]).

Настройка аудитории в Keycloak

  • Добавление области или настройка существующей
  • Добавление клиента my-app или использование существующего
  • Перейти к вновь добавленным "Меню «Области клиента» [1]
    • Добавить область действия клиента «good-service»
    • В настройках «good-service» перейти на вкладку Mappers
      • Создать протокол Mapper 'my-app-аудитория '
        • Имя: my-app-аудитория
        • Выберите тип картографа: Аудитория
        • Включена Клиентская аудитория: my-app
        • Добавитьдля доступа к токену: на
  • Настройте клиентское my-приложение в меню «Клиенты»
    • Вкладка «Области клиента» вНастройки my-app
    • Добавить доступные клиентские области "good-service" к назначенным клиентским областям по умолчанию

Если у вас более одного клиента, повторите шаги длядругие клиенты также и добавляют область хорошего обслуживания.Целью этого является изоляция клиентского доступа.Выданный токен доступа будет действителен только для целевой аудитории.Это подробно описано в документации Keycloak [1,2].

Ссылки на последнюю версию основной документации документации Keycloak:

Ссылки с тегом git:

...