java - 使用 keycloak 在 servlet 应用程序中获取用户角色

标签 java servlets keycloak

我正在使用 keycloak 来保护我的 servlet。我必须添加新角色并将它们动态分配给用户。它使用管理 API 在 keycloak 中工作,但我无法弄清楚如何在 servlet 中获取特定用户的角色。

我试过这个解决方案,但我得到的是空集:

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
...

KeycloakSecurityContext context = (KeycloakSecurityContext)request.getAttribute(KeycloakSecurityContext.class.getName());
    Set<String> roles = AdapterUtils.getRolesFromSecurityContext((RefreshableKeycloakSecurityContext) context);
...
}

最佳答案

@Shiva 的回答对我不起作用。 getRealmAccess() 返回空值。我们必须使用以下内容:

KeycloakPrincipal principal = (KeycloakPrincipal) request.getUserPrincipal();

String clientId = "securesite";
principal.getKeycloakSecurityContext().getToken().getResourceAccess(clientId).getRoles();

关于java - 使用 keycloak 在 servlet 应用程序中获取用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014894/

相关文章:

java - 如何从 onProgressUpdate 和 onPostExecute 获得响应

java - Vaadin 和 Spring 与 Touchkit。基于 servlet 和注释?

java - 即使 XML 相同,jUnit 比较 XML 字符串也会失败

ruby-on-rails - 使用 Keycloak 实现单点登录

security - 安全领域的定义

java - 如何返回游戏?完成游戏后

java - 我怎样才能安全地向上转型可选?

java - 如何根据二维数组上的特定位置获取网格单元的状态

java - 一种避免许多 servlet 的方法

keycloak - 如何将 KeyCloak 与 WSo2 Identity Server 集成? WSo2 作为 IDP