Я использую keycloak для защиты своего сервлета. Я должен добавлять новые роли и динамически назначать их пользователям. Он работает в keycloak, используя admin API, но я не могу понять, как получить роли для конкретного пользователя в сервлете.Получение роли пользователя в приложении сервлета с помощью keycloak
Я попробовал это решение, но я получаю пустой набор:
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
...
KeycloakSecurityContext context = (KeycloakSecurityContext)request.getAttribute(KeycloakSecurityContext.class.getName());
Set<String> roles = AdapterUtils.getRolesFromSecurityContext((RefreshableKeycloakSecurityContext) context);
...
}
Добавление ролей в контекст безопасности Keycloak - плохая идея. Эти роли будут присутствовать только до тех пор, пока токен не будет обновлен. – Scott