Как я могу получить роли пользователя из текущего сеанса?

После входа в систему с помощью Keycloak я хочу получить сопоставления ролей пользователя (определенные в консоли администратора keycloak) от пользователя, вошедшего в систему. Я могу получить имя, фамилию, идентификатор, идентификатор токена, но при попытке получить роли я получаю пустой массив:

private List<KeycloakOidcProfile> getUserData() {
    final PlayWebContext context = new PlayWebContext(ctx(), playSessionStore);
    final ProfileManager<KeycloakOidcProfile> profileManager = new ProfileManager(context);


    System.out.println("Roles->>>"+ profileManager.get(true).get().getRoles()); //here i get -> []
    System.out.println("FirstName->>>"+ profileManager.get(true).get().getFirstName());
    System.out.println("Last Name->>>"+ profileManager.get(true).get().getFamilyName());
    System.out.println("ID->>>"+ profileManager.get(true).get().getId());


    return profileManager.getAll(true);

0 ответов

Я считаю, что вам следует реализовать свой собственный AuthorizationGenerator и прикрепить его к клиенту (в данном случае к клиенту Keycloak), чтобы сопоставить роли токенов с KeycloakOidcProfile, но убедитесь, что OIP отправляет роли в своем токене.

Есть клей http://www.pac4j.org/docs/clients.html

Другие вопросы по тегам