Я нашел ответ.
Я опубликую здесь, потому что кто-то может найти это полезным.
Что ж, вы можете добавить пользовательские атрибуты для пользователя, но вам нужны дополнительные конфигурации, чтобы получить его со стороны javascript. Для удобства начинающих я напишу ответ от «Добавление клиента» на получение атрибута из javascript (в моем случае реагирует на js).
Давайте добавим пользовательские атрибуты для пользователя.
Войдите в Keycloak и выберите свою область (если у вас есть несколько областей, если вы не будете автоматически входить в область)
После этого выберите Пользователи -> Просмотреть всех пользователей
Выберите своего пользователя в моем случае это Алиса
Выберите Атрибуты и добавьте настраиваемые атрибуты (в моем случае я добавил вызов настраиваемого атрибута companyId , как показано ниже)
Теперь нажмите Сохранить
Теперь мы должны сопоставить атрибут Custom с нашим клиентом keycloak.
Чтобы клиент мог использовать keycloak, у вас должен быть клиент в Clients (левая боковая панель)
Если у вас нет, вы должны настроить клиент для этого. В моем случае мой клиент test-app
Для этого выберите Клиенты -> test-app -> Mappers
Теперь мы должны создать Mapper. Нажмите Создать
Для Token Claim Name вы должны дать свой ключ пользовательских атрибутов (в моем случае это companyId ) для моей простоты, я использую companyId для Name, префикс роли царства Имя токена . Вы должны выбрать Атрибут пользователя в Тип сопоставления и Строка для Заявка JSON Тип
После этого нажмите Сохранить. Теперь вы можете получить свой собственный атрибут из JavaScript.
скажем, ваш JavaScript-объект keycloak keycloak , вы можете получить companyId с помощью keycloak.
let companyId = keyCloak.idTokenParsed.companyId;
пример кода был бы как ниже (мой код вact.js)
keyCloak.init({
onLoad: 'login-required'
}).success(authenticated => {
if (authenticated) {
if (hasIn(keyCloak.tokenParsed, 'realm_access')) {
if (keyCloak.tokenParsed.realm_access.roles === []) {
console.log("Error: No roles found in token")
} else {
let companyId = keyCloak.idTokenParsed.companyId;
}
} else {
console.log("Error: Cannot parse token");
}
} else {
console.log("Error: Authentication failed");
}
}).error(e => {
console.log("Error: " + e);
console.log(keyCloak);
});
Надеюсь, кто-нибудь найдет этот ответ полезным, потому что я мог бы найти ответ для JavaScript. Удачного кодирования:)