我正在针对仅包含用户信息但不包含角色信息的 HTTP 服务为 Keycloak 编写自定义 UserStorageProvider。
我想完成此服务的所有用户都被分配到 keycloak 中已经存在的复合角色。如您所见,我正在手动解析复合角色的聚合角色,这并不是很热衷。
主要问题是,我在以下 AbstractUserAdapter 中分配的角色在 Keycloak 的管理控制台中可见在“分配的角色”下,但不在“有效角色”。因此,它们不会映射到我的不记名令牌中。
@Override
public Set<RoleModel> getClientRoleMappings(ClientModel app) {
Set<RoleModel> result = new HashSet<>();
for (RoleModel role : app.getRoles()) {
if("my_keycloak_comp_role".equals(role.getName())) {
result.add(role);
if (role.isComposite()) {
result.addAll(role.getComposites());
}
}
}
return result;
}