Существует функция , начиная с keycloak 3.4.0, называемая обмен токенами, которая позволяет вам обмениваться токеном доступа от пользователя с разрешением олицетворения для получения другого токена от имени другого пользователя.Вы можете использовать конечную точку токена следующим образом:
curl -X POST \
-d "client_id=starting-client" \
-d "client_secret=geheim" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "subject_token=...." \
--data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \
-d "audience=target-client" \
-d "requested_subject=wburke" \
http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token
Вы можете найти этот пост также полезным.