Keycloak Java适配器-检索角色列表

Ano*_*142 5 java wildfly keycloak

我需要检索与用户相关联的角色,但是我正在使用wildfly,我已经在wildfly和Java项目中安装了所有jar密钥斗篷,但是可以通过Java适配器检索此列表吗?

其他选项是像通过get,post,put等方式调用其他api一样调用rest api。但是我的第一个选择是Adapters。

我通过适配器进行身份验证,但是找不到任何检索角色,客户端,领域等的方法。

我错了,或者适配器仅用于身份验证?

有人有很好的榜样吗?

rav*_*iru 5

use-resource-role-mappings : true 在keycloak.json中设置该选项,您应该能够在servlet中获得角色,如下所示

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

principal.getKeycloakSecurityContext().getToken().getResourceAccess("testclient").getRoles();
Run Code Online (Sandbox Code Playgroud)

您也可以KeycloakPrincipal从这样的上下文中获取

  Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
  Set<KeycloakPrincipal> principals = subject.getPrincipals(KeycloakPrincipal.class);
Run Code Online (Sandbox Code Playgroud)

然后获得角色


Ano*_*142 2

谢谢,这里还有另一种方式:(按名称检索一个角色)

Keycloak keycloak = Keycloak.getInstance("http://localhost/auth", "realm-name", "client-name", authorization);

RoleRepresentation role = keycloak.realm("realm-name").clients().get(idOfClient).roles().get(roleName).toRepresentation();
Run Code Online (Sandbox Code Playgroud)

列出所有用户:

UsersResource users = keycloak.realm("realm-name").users();
Run Code Online (Sandbox Code Playgroud)

而“authorization”是字符串令牌持有者

“getInstance”还有其他方法可以发送,例如 pass 和 user。