在Keycloak java客户端中创建用户时遇到问题

时间:2017-10-30 05:19:41

标签: java keycloak

这是下面的简单代码我试图在主Realm中创建Keycloak用户。 但我在Bad request中收到Keycloak作为回报并低于警告:

  

10:27:58,256 WARN [org.keycloak.events](默认任务-111)type = LOGIN_ERROR,realmId = master,clientId = security-admin-console,userId = null,ipAddress = 127.0.0.1,error = not_allowed,auth_method = oauth_credentials,grant_type = password,client_auth_method = client-secret

Keycloak kc = Keycloak.getInstance("http://localhost:8080/auth", "master", "admin", "password","security-admin-console");
    CredentialRepresentation credential = new CredentialRepresentation();
    credential.setType(CredentialRepresentation.PASSWORD);
    credential.setValue(password);
    credential.setTemporary(false);
    UserRepresentation user = new UserRepresentation();
    user.setUsername(username);
    user.setFirstName("Test");
    user.setLastName("User");
    user.setEnabled(true);
    user.setCredentials(Arrays.asList(credential));
    kc.realm("master").users().create(user);

1 个答案:

答案 0 :(得分:1)

使用Keycloak REST API需要

access_token。因此,您需要为您正在使用的客户端检查Direct Access Grants Enabled: ON。默认情况下,它为客户端admin-cli启用。但是,看起来,它已被security-admin-console禁用。

我认为最好使用admin-cli

例如,也尝试使用Postman的HTTP请求执行相同的操作。 你需要:

  1. 使用管理员凭据获取access_token
  2. 使用该令牌创建用户。
  3. 您可以在此处找到使用Admin REST API的完整示例: https://github.com/v-ladynev/keycloak-nodejs-example

    此示例使用Node.js.但您可以分析代码以更好地了解如何使用REST API。