WildFly适配器-动态添加的访问令牌中缺少的角色

时间:2018-07-20 08:32:57

标签: wildfly keycloak

Example User Storage Provider with EJB and JPA之后,我创建了一个自定义用户存储提供程序。

UserAdapter#getRoleMappings中,我将返回通过JPA实体检索的角色,如下所示:

@Override
public Set<RoleModel> getRoleMappings() {
    final Set<RoleModel> roles = super.getRoleMappings();
    for (final GroupBean group : groups) {
        roles.add(new RoleAdapter(this, String.valueOf(group.getObjectID()), group.getName()));
    }

    return roles;
}

RoleAdapter是我正在使用的RoleModel自己(可能不完整!)实现,因为到目前为止我还没有找到创建org.keycloak.models.cache.infinispan.RoleAdapter实例的方法。

在管理控制台中,为特定用户动态添加的角色被列为“分配的角色”,而不是“有效角色”,这也许已经是一个问题。

当我通过OIDC REST端点/realms/{realm-name}/protocol/openid-connect/token向用户请求访问令牌时,所有角色都包含在realm_access角色中。

但是,当我使用WildFly适配器登录到使用KEYCLOAK身份验证方法保护已部署到WildFly的Web应用程序,并查看从Servlet会话中的RefreshableKeycloakSecurityContext获得的令牌时,动态添加的角色不包含在访问令牌中。

我可能会缺少什么?

0 个答案:

没有答案