获取javax.ws.rs未授权异常:HTTP 401尝试使用spring Boot 服务在keycloak中创建新用户时未经授权。
在KeycloakConfig类中,它在使用HTTP 401 Unauthorized创建keycloak示例期间中断。“消息”:“javax.ws.rs.未授权异常:HTTP 401未经授权",
我遗漏了什么吗?我在keycloak客户端或realm角色中没有任何额外的角色配置。
我想在KeycloakBuilder.builder中添加“.authorization(...)”,但我不确定要指定什么。
public static Keycloak getInstance(User user) {
if (keycloak == null) {
keycloak = KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.realm("myrealm")
.username(user.getUsername()).password(user.getPassword())
.grantType(OAuth2Constants.PASSWORD)
.clientId("myclient")
.clientSecret("0a53569564d2a748a0a5482699")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()).build();
}
return keycloak;
}
服务等级
UsersResource usersResource = KeycloakConfig.getInstance(user).realm("myrealm").users();
CredentialRepresentation credentialRepresentation = createPasswordCredentials(user.getPassword());
UserRepresentation kcUser = new UserRepresentation();
kcUser.setUsername(user.getEmail());
kcUser.setCredentials(Collections.singletonList(credentialRepresentation));
kcUser.setFirstName(user.getFirstName());
kcUser.setLastName(user.getLastName());
kcUser.setEmail(user.getEmail());
kcUser.setEnabled(true);
kcUser.setEmailVerified(false);
javax.ws.rs.core.Response response = usersResource.create(kcUser);
System.out.println("kcUser: " + kcUser.toString());
System.out.printf("Repsonse: %s %s%n", response.getStatus(), response.getStatusInfo());
在属性文件中
keycloak.realm=myrealm
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.resource=myclient
keycloak.credentials.secret=0a5356444d26a748a0a5482699
keycloak.ssl-required= external
keycloak.use-resource-role-mappings= true
keycloak.bearer-only=true
keycloak.principal-attribute=preferred_username
3条答案
按热度按时间c3frrgcw1#
由于缺少导入,我假设
KeycloakBuilder
来自包org.keycloak.admin.client.KeycloakBuilder
根据您提供的代码示例,您正尝试使用您要创建的用户示例化
Keycloak
示例。该用户缺少创建新用户的权限。也就是说,您需要使用具有管理员权限/角色的用户创建Keycloak示例。至少“* 管理用户、查看客户端、查看领域、查看用户 *”
使用管理员访问权限,您可以为多个领域创建用户。
omqzjyyz2#
确保在“myrealm”下创建管理员帐户。不能使用默认管理员帐户(主领域)为“myrealm”创建用户
tcomlyy63#
为了使用户有权操作和调用Keycloak的API,您必须为该用户设置客户端角色
步骤1:用户应该在客户端"myrealm"中创建一个管理员,如"admin"密码"abc123"
第二步:移动到Roles mapping页签后,点击adminuser,为adminuser分配一些必要的权限,如下所示
步骤3:将.用户名(user. getUsername()).密码(user. getPassword())中的密码替换为"abc123"
希望能帮到你!