当前位置: 首页 > 知识库问答 >
问题:

使用keycloak创建用户

齐财
2023-03-14

我试图在一个spring boot项目中用KeyCloak的/usersendpoint创建用户。以下是我所遵循的步骤:首先在master领域中创建一个admin和admin-cli客户端。用于获取keycloak的实例以进行进一步的操作。

return Keycloak.getInstance(
            keycloakProperties.getAuthServerUrl(),
            "master",
            adminConfig.getUserName(),
            adminConfig.getPassword(),
            "admin-cli");

如果不在user中添加客户端表示,则可以创建用户。如果我在userRepresentation对象中添加CredentialRepresentation,我将得到没有任何详细信息的BadRequest错误(400代码)。我查阅了keycloak服务器日志,这也没有什么帮助。作为一种尝试,我首先创建了用户,然后重置密码,然后也创建了用户,但无法使用重置密码endpoint设置密码(相同的错误)。正如文档中提到的,我已经将userRepresentation的enabled属性设置为true。Keycloak版本:12.0.4,spring boot版本:2.1.6。发行版我试图从收到的响应中读取实体,但也失败了。任何能解决这个问题的帮助都将不胜感激。//用户创建代码

UserRepresentation userRepresentation = new UserRepresentation();
    userRepresentation.setUsername(userModel.getEmail());
    userRepresentation.setEmail(userModel.getEmail());
    userRepresentation.setCredentials(Arrays.asList(createPasswordCredentials(userModel.getPassword())));
    userRepresentation.setEnabled(true);
    Keycloak keycloak = getKeycloakInstance(keycloakProperties);
    Response response = keycloak.realm(keycloakProperties.getRealm()).users().create(userRepresentation);
    log.info("Response Code {}", response.getStatus());

CredentialRepresentation的代码:

private static CredentialRepresentation  createPasswordCredentials(String password) {
    CredentialRepresentation passwordCredentials = new CredentialRepresentation();
    passwordCredentials.setTemporary(false);
    passwordCredentials.setType(CredentialRepresentation.PASSWORD);
    passwordCredentials.setValue(password);
    return passwordCredentials;
  }

共有1个答案

乐正浩博
2023-03-14

我只是想更新一下这个问题背后的真正原因,我使用的服务器是旧版本的,并且这个问题在针对最新的keycloak服务器测试时得到了修复。谢谢你们的支持:)

 类似资料:
  • 有没有更好的方法来实现这种设置(类似于组织设置,一个人可以属于几个组织并管理其中的一些/所有组织,而不必有几个帐户)? 我用的是Keycloak 4.6

  • 我试图用java-admin-client创建一个新用户。我使用keycloak UI在我的领域中创建了一个新客户机。 代码: 最后一行是给我403禁止。

  • 我试图使用KeyCloak的管理API,以便向用户角色映射添加客户端级别的角色。为此,我使用管理endpoint: 不确定这里的问题是什么,因为该角色存在于系统中。这里会出什么问题?

  • 但当我试图用用户名和密码登录时,它失败了。当我查看UI中的用户凭据时,它确实显示了一行类型,但用户标签是空白的。 如何使用REST API创建具有密码的用户?

  • 我使用keycloak作为SAML身份提供程序的身份代理,以便登录到web应用程序。 为了使其工作,我创建了新的身份验证流程,看起来像:“创建用户如果唯一”,“自动链接代理帐户”。 Keycloak使用登录页正确重定向到标识提供程序。登录后,identity provider按预期重定向到keycloak,然后重定向到我的web应用程序,但keycloak也创建本地用户。 是否可以在不创建本地用户

  • 如何在KeyCloak中的领域中创建管理用户?我尝试了,它给了我一个错误: