所以我认为这个问题来自我不太了解 AWS Cognito 用户池和 graphql 模式中的身份验证规则之间的关系。 当我运行下面的代码时,我收到消息“无权访问用户类型的 createUser”。 其他相关代码是我的 index.js: 以及 User 对象的架构定义: 最终,我正在尝 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
尝试使用 spring 引导服务在 keycloak 中创建新用户时出现 javax.ws.rs.NotAuthorizedException: HTTP 401 未经授权。
在 KeycloakConfig class 中。 它在使用 HTTP 401 Unauthorized 创建 keycloak 实例时中断。 “消息”:“ javax.ws.rs.NotAuthorizedException: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;
}
在役 class
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
由于缺少导入,我假设KeycloakBuilder
来自 package org.keycloak.admin.client.KeycloakBuilder
根据您提供的代码示例,您正在尝试使用您只想创建的用户实例化Keycloak
实例。 该用户没有创建新用户的权限。
也就是说,您需要使用具有管理员权限/角色的用户创建一个 Keycloak 实例。 至少“ manage-users, view-clients, view-realm, view-users ”
keycloak = KeycloakBuilder.builder()
.serverUrl(KEYCLOAK_SERVER_URL)
.realm("master")
.clientId("admin-cli")
.username("admin")
.password("admin")
.build();
通过管理员访问权限,您可以为多个领域创建用户。
// Create a new user
final UserRepresentation newUser = new UserRepresentation();
newUser.setUsername("username");
newUser.setFirstName("fristname");
newUser.setLastName("lastname");
newUser.setEmail("username@example.com");
newUser.setEnabled(true);
// Now you need to get the realm you want the user to add to and the user ressource
final UserResource realm = keycloak.realm("nameOfTheRealm").users();
// Create the user for the realm
final Response createUserResponse = userRessource.create(newUser);
// check response if everything worked as expected
确保在“myrealm”下创建了管理员帐户。 您不能使用默认管理员帐户(主领域)为“myrealm”创建用户
并且请检查您在 Keycloak 实例中生成的客户端密码是否与您在应用程序中使用的相同。 如果您使用的是客户端密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.