Как я могу получить роли пользователя из текущего сеанса?
После входа в систему с помощью 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