我正在使用 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/