Я хотел бы знать, можно ли и как можно устанавливать и обновлять Keycloak (OpenID-Connect) AccessToken или IdToken атрибуты (так называемые утверждения) клиентским веб-приложением после успешной аутентификации.
Вариант использования - добавить определенные c атрибуты пользователя (например, количество домашних животных, волосы цвет, любимый автомобиль и т.д. к веб-интерфейсу. Второе веб-приложение, также использующее токен Keycloak для аутентификации / авторизации пользователя (функция единого входа), должно иметь возможность читать атрибуты пользователя, добавленные первым веб-приложением к токену.
Даже я боюсь, что добавление и изменение полезной нагрузки токена не разрешено архитектурным проектом OpenId-Connect, тем не менее, я надеюсь, что это все равно будет возможно.
Token-атрибуты реализованы как «Утверждения» в OpenId-Connect. И Keycloak поддерживает сопоставления 'Claim' во время процесса аутентификации (устанавливается сопоставлениями stati c на сервере Keycloak, а также кодом, который выполняется на сервере Keycloak).
Соответствующие методы для установки и получения ключа Claim Пары -значение упоминаются в следующих статьях:
Как создать преобразователь сценариев в Keycloak? :
token.getOtherClaims().put("myClaimName", "claim value");
Включите языковой стандарт пользователя в токен идентификатора Keycloak :
Map<String, Object> otherClaims = token.getOtherClaims();
if (otherClaims.containsKey("myClaimName")) {
String claimValue = String.valueOf(otherClaims.get("myClaimName"));
}
В случае, если изменение полезной нагрузки токена клиентами Keycloak не допускается архитектурным дизайном, я ценю любые предложения по передовым методам передачи динамически добавляемых пользовательские атрибуты из одного веб-приложения в другое веб-приложение, имеющие одинаковый ключ доступа и / или идентификатор идентификатора.