I\'m using keycloak to protect my servlet. I have to add new roles and assign them to users dynamically. It works in keycloak using admin API, but I can\'t figure out how to
If the servlet is protected by keyclaok then you can use the following API to get the KeycloakSecurityContext
and then access the Set
of roles to modify it.
KeycloakPrincipal principal = (KeycloakPrincipal) request.getUserPrincipal();
principal.getKeycloakSecurityContext().getToken().getRealmAccess().getRoles().add("Test-Role");
A sample servlet request might look like this.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@SuppressWarnings("rawtypes")
KeycloakPrincipal principal = (KeycloakPrincipal)request.getUserPrincipal();
if (principal != null) {
//user has a valid session, we can assign role on the fly like this
principal.getKeycloakSecurityContext().getToken().getRealmAccess().getRoles().add("Test-Role");
}
}