2017-09-05 77 views
0

我想通過keycloak管理客戶端創建一個用戶,但我獲得了400的狀態。通過keycloak創建用戶通過keycloak管理客戶端返回400

  • 我無法激活keycloak客戶端的任何日誌,所以我不知道它執行的http調用。
  • 我設法通過郵遞員創建用戶。
  • 搜索,並得到用戶的工作(見下文)

你看到我的代碼中的任何錯誤?

 Keycloak keycloak = Keycloak.getInstance(keycloakUrl,"master", 
    keycloakAdminUsername, keycloakAdminPassword, 
        keycloakAdminClient); 
      UserRepresentation user = new UserRepresentation(); 
      user.setUsername("username"); 
      user.setFirstName("firstname"); 
      user.setEmail("[email protected]"); 
      user.setRequiredActions(Collections.<String>emptyList()); 
      user.setEnabled(true); 

      Response response = keycloak.realm(realm).users().create(user); 
      if (response.getStatus() != 201) { 
       log.error("Couldn't create user, status:{}", response.getStatus()); 
       } else { 
        log.info("User# created", user.getUsername()); 
        log.info("Keycloak response status: {}", 
response.getStatus()); 
        } 

無法創建用戶,狀態:400

的事情是,如果我試圖讓使用相同keycloak實例的用戶,它的工作原理。

UserResource userX = keycloak.realm(realm).users().get("8c1d29fd-8d6b-4dea-817f-3fc1421096f0"); 
log.debug(userX.toRepresentation().getUsername()); 

一樣的,如果我使用搜索

log.debug("Getting users from keycloak"); 
    List<UserRepresentation> users = keycloak.realm(realm).users().search(username, 0, 10); 
    users.forEach(user -> log.info("username: {}", user.getUsername())); 
+0

是否曾經使用過'kc'變量或是一個錯字(而不是它應該是'keycloak')? – Thomas

+0

事實上,這是一個錯誤的複製粘貼,我已經糾正它 – Grandmaster

+0

我前段時間做了同樣的事情,但不幸的是我無法訪問代碼atm和我的記憶不太適合我,所以我只能提供一些提示你可以嘗試:1)檢查你的管理員用戶是否允許在你的領域創建和管理用戶2)嘗試沒有必要的操作(iirc他們不在這裏工作)3)嘗試發送一個(臨時)密碼 – Thomas

回答

0

好了,我已經找到了解決辦法的那種愚蠢到我的眼睛。客戶端需要與keycloak服務器具有相同的版本。舉例來說,我得到了keycloak管理客戶端的2.0.0.Final版本,因爲keycloak服務器是2.0.0。據我瞭解,這完全是關於UserRepresentation類的。