Keycloak: олицетворение чеканит токен для неправильного клиента - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь выдать токен доступа посредством олицетворения с помощью доверенного клиента и выдачи токена для клиента publi c. Я установил разрешения на обмен токенами, и запрос работает. Однако моя проблема в том, что выданный токен, похоже, содержит неправильного клиента в AZP.

Вот мой запрос:

curl -v -X POST \
    -d "client_id=impersonator-client" \
    -d "client_secret=<secret omitted>" \
    --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
    -d "audience=target-client" \
    --data-urlencode "requested_subject=john.doe" \
    http://localhost:8080/auth/realms/swarm/protocol/openid-connect/token

В основном я хочу получить токен доступа для пользователя " john.doe », выдавая себя за пользователя с помощью« impersonator-client ». Выданный токен должен быть отчеканен для «target-client», однако AZP по-прежнему содержит «impersonator-client».

Причина, по которой я делаю это, заключается в том, что должна быть возможность входа с использованием внешнего рабочий процесс аутентификации, который, в конце концов, предоставляет токен доступа, который затем может быть проверен на моем внутреннем сервере, который использует доверенный клиент для олицетворения.

Согласно документации (https://www.keycloak.org/docs/latest/securing_apps/#_token -exchange ) аудитория должна определить целевого клиента, для которого предполагается создать токен.

По поводу разрешений:

Я установил разрешение «admin-impersonating.permission.users» с клиентской политикой, которая ссылается на «имперсонатор-клиент». Сам «целевой клиент» настроен с разрешением «token-exchange.permission.client.e236d39 c -9b9 c -4815-b734-90364fea4e91», которое включает в себя политику клиента, ссылающуюся на «имперсонатор-клиент». Я что-то упустил? Дело в том, что документы кажутся неправильными. В документах используется «user-impersonated.permission.users» вместо «admin-impersonating.permission.users». Когда я попробовал вот так, запрос был даже отклонен.

Это ошибка в Keycloak или я что-то сделал не так?

Заранее спасибо!

...