我们实现了一些新的Rest API作为Keycloak提供程序。提供程序正在工作,但我们找不到检查用户角色的方法。
public class MyResourceProvider implements RealmResourceProvider {
private final KeycloakSession session;
private final CustomUserManager userManager;
public MyResourceProvider(KeycloakSession session) {
this.session = session;
this.userManager = CustomUserManager.build(session);
}
@POST
@Path("user/search/attribute")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public List<UserRepresentation> getUsersByAttributes(
@QueryParam("first") Integer first,
@QueryParam("max") Integer max,
SearchUsers searchUsers
) {
// TODO: check user roles
return userManager.searchForUsers(searchUsers, session.getContext().getRealm(), first, max).stream()
.map(userModel -> ModelToRepresentation.toRepresentation(session, session.getContext().getRealm(), userModel))
.collect(toList());
}
...
我们在网上找不到任何例子
您可以使用字符串参数“hasAuthority('roles_roleName')”
将@preauthorize()注释添加到api中,其中rolename是要检查的角色的名称,如果您在令牌的“roles”字段中有角色的话。
如果要检查用户访问令牌的“范围”字段,请改用“hasAuthority('scope_roleName')”
。
@POST
@Path("user/search/attribute")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@PreAuthorize("hasAuthority('ROLES_rolename')")
public List<UserRepresentation> getUsersByAttributes(
@QueryParam("first") Integer first,
@QueryParam("max") Integer max,
SearchUsers searchUsers
) {
return userManager.searchForUsers(searchUsers, session.getContext().getRealm(), first, max).stream()
.map(userModel -> ModelToRepresentation.toRepresentation(session, session.getContext().getRealm(), userModel))
.collect(toList());
}
在keycloak中实现自定义restendpoint时,我使用了以下示例:
我尝试创建一个自定义spi,在我的keycloak项目中,遵循基本的keycloack结构,我添加了扩展provider的自定义provider接口,正如keycloak文档所说,定制提供程序工厂并为它们实现定制spi,它们在源代码中是这样做的,之后,我为我的提供程序和提供程序工厂创建一个自定义实现,如文档所述,我在Meta-INF/Services中创建文件,我正在使用ear aproach来部
在过去的几周里,我一直在努力掌握KeyClope,这样我就可以实现一种使用遗留提供商(基于Oracle,带有会话表和各种奇怪的东西)对用户进行身份验证的方法。我们计划在不久的将来解决这个问题,但目前我们必须解决这个问题,所以我们的想法是在前线使用KeyClope——利用它提供的主要好处,比如SSO——在需要身份验证的应用程序中省略传统的身份验证提供程序。 我读了一些关于构建自定义OIDC身份提供程
我正在尝试创建一个自定义的KeyClope提供程序,它将为登录逻辑添加一些内容。我已经读过如何为KeyClope创建提供者(或插件),我正在与之合作的项目中已经有一个提供者(或插件),但我对它们知之甚少。 我需要为用户身份验证/授权添加自定义逻辑:我希望能够检查内部数据库中的一些字段来验证人员帐户。但是我没有找到任何关于类似情况的指南或好文章。有人能给我提供一些关于从什么开始的链接吗?为了实现这样
我已经为我的组织的需求添加了一些自定义属性到注册字段。根据文档自定义了主题并添加了验证。很好用。我可以添加这些属性到帐户管理页面也通过修改帐户模板。
我使用的是jboss KeyCloak1.5最终版本。我开发了与keycloak属性和我的用户企业数据库接口的自定义用户联邦提供程序。 我的需要是发送到用户登录界面自定义的错误消息,基于特定的特定错误与我的遗留用户数据库。