java 登陆 注册 角色_java – 如何以编程方式创建keycloak客户端角色并分配给用户...

这篇博客展示了如何使用Java编程方式与Keycloak交互,创建客户端角色并将其分配给用户。通过Keycloak实例,创建角色,然后创建用户并设置其权限,确保用户能够登录。
摘要由CSDN通过智能技术生成

这是您的请求的解决方案(不是很漂亮,但它的工作原理):

// Get keycloak client

Keycloak kc = Keycloak.getInstance("http://localhost:8080/auth",

"master", "admin", "admin", "admin-cli");

// Create the role

RoleRepresentation clientRoleRepresentation = new RoleRepresentation();

clientRoleRepresentation.setName("client_role");

clientRoleRepresentation.setClientRole(true);

kc.realm("RealmID").clients().findByClientId("ClientID").forEach(clientRepresentation ->

kc.realm("RealmID").clients().get(clientRepresentation.getId()).roles().create(clientRoleRepresentation)

);

// Create the user

UserRepresentation user = new UserRepresentation();

user.setUsername("test");

user.setEnabled(true);

Response response = kc.realm("RealmID").users().create(user);

String userId = getCreatedId(response);

// Assign role to the user

kc.realm("RealmID").clients().findByClientId("ClientID").forEach(clientRepresentation -> {

RoleRepresentation savedRoleRepresentation = kc.realm("RealmID").clients()

.get(clientRepresentation.getId()).roles().get("client_role").toRepresentation();

kc.realm("RealmID").users().get(userId).roles().clientLevel(clientRepresentation.getId())

.add(asList(savedRoleRepresentation));

});

// Update credentials to make sure, that the user can log in

UserResource userResource = kc.realm("RealmID").users().get(userId);

userResource.resetPassword(credential);

使用帮助方法:

private String getCreatedId(Response response) {

URI location = response.getLocation();

if (!response.getStatusInfo().equals(Response.Status.CREATED)) {

Response.StatusType statusInfo = response.getStatusInfo();

throw new WebApplicationException("Create method returned status " +

statusInfo.getReasonPhrase() + " (Code: " + statusInfo.getStatusCode() + "); expected status: Created (201)", response);

}

if (location == null) {

return null;

}

String path = location.getPath();

return path.substring(path.lastIndexOf('/') + 1);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值