Как создать Script Mapper в Keycloak? - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно создать протокольный маппер типа Script Mapper в Keycloak.Сценарий должен получить атрибут пользователя, проверить его размер и поместить его в маркер.Я не нашел никакой документации или примеров того, как должен быть создан скрипт.Из кусочков, которые я мог собрать, я думаю, сценарий должен выглядеть примерно так:

var value = user.getAttribute("myAttribute");
if (value.length > LIMIT) {
    value = value.substring(0,LIMIT);
}
token.setOtherClaims("myAttribute",value);
  • Это правильно?Я составил user.getAttribute ("myAttribute").Есть ли источник документации, где я могу найти, как получить атрибут пользователя Keycloak?
  • должен ли скрипт что-либо возвращать?Любая помощь будет в основном приветствоваться.

1 Ответ

0 голосов
/ 25 октября 2018

Магию Script Mappers можно понять, взглянув на источники ключей: Source

Скрипт может что-то вернуть, используя переменную экспорта, например,

exports = "Claim Value"

Различные типы:

Вот пример сценария:

// you can set standard fields in token
token.setAcr("test value");

// you can set claims in the token
token.getOtherClaims().put("claimName", "claim value");

// work with variables and return multivalued token value
var ArrayList = Java.type("java.util.ArrayList");
var roles = new ArrayList();
var client = keycloakSession.getContext().getClient();
var forEach = Array.prototype.forEach;
forEach.call(user.getClientRoleMappings(client).toArray(), function(roleModel) {
  roles.add(roleModel.getName());
});

exports = roles;

Надеюсь, это поможет!

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