Keycloak: как получить client_id там, где зарегистрирован пользователь? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть область с несколькими клиентами OpenId, использующими SSO.Мне нужно определить, с какого клиента пришел каждый пользователь Keycloak.

Как я могу получить эту информацию?

Ответы [ 3 ]

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

Если вы декодируете токен, поле «aud» будет вашим «client_id».

Проверьте эту информацию, используя jwt.io .

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

Отвечая на мой собственный вопрос.

Я не нашел эту информацию изначально в токене Keycloak.Поэтому я добавил скрипт.

В разделе Аутентификация> Процесс регистрации я добавляю выполнение типа «Скрипт» со следующей функцией:

function authenticate(context) {

    var username = user ? user.username : "anonymous";
    var uri = context.getUriInfo();

    LOG.info("setClientIdAttribute for URI " + context.getUriInfo().getRequestUri());

    if (uri !== null) {
        var clientId = uri.getQueryParameters().getFirst("client_id");

        if (clientId !== null) {
            LOG.info("Attribute 'origin' set with value " + clientId + " for user " + username);
            user.setSingleAttribute('origin', clientId);
        }
    }

    context.success();
}
0 голосов
/ 19 декабря 2018

Если декодируется, каждый JWT имеет параметр azp, который является идентификатором клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...