(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Keycloak/RHBK】AdminAPIを利用して新規ユーザを作成する

スポンサーリンク

やりたいこと

Red Hat build of Keycloak(Keycloakの商用版)にてAdmin API経由でユーザを作成する。

環境情報
  • Red Hat Enterprise Linux : 9.3 (Plow)
  • rhbk-22.0.8

やり方

アクセストークンの取得を行い

$ AT=`curl --insecure -X POST http://localhost:8080/realms/master/protocol/openid-connect/token --user admin-cli:admin -H 'content-type: application/x-www-form-urlencoded' -d 'username=admin&password=xx&grant_type=password' | jq .access_token | sed -e 's/"//g'`

アクセストークンを引数に渡した上で「POST /admin/realms/{realm}/users」を利用すると

$ curl --location --request POST 'http://localhost:8080/admin/realms/master/users' --header 'Content-Type: application/json' --header "Authorization: Bearer $AT" --data-raw '{"enabled":"true", "username":"test-user01","credentials":[{"type":"password","value":"testpass123","temporary":false}]}'

標準出力はないまま、ユーザが作成される。

コンソールからユーザ作成が確認できる

以下、補足です。

補足

公式ドキュメントの「UserRepresentation」欄を見ると分かりますが、項目に関してはオプショナルですがJSONの中に含めることでメールアドレスや名前も指定することが可能です。主な流れはKeycloakと同様となります。

kc.shが出力するデバッグ用のログを確認すると、作成したユーザ情報が表示されていました。

... DEBUG [org.hibernate.internal.util.EntityPrinter] (executor-thread-1) org.keycloak.models.jpa.entities.UserEntity{lastName=null, federatedIdentities=[], realmId=xx, credentials=[], createdTimestamp=xx, serviceAccountClientLink=null, enabled=true, notBefore=0, emailConstraint=xx, emailVerified=false, firstName=null, requiredActions=[], federationLink=null, attributes=[], id=xx, email=null, username=test-user01} 

尚、ユーザ名は一意である必要があり、既に存在するusernameで追加を行うと以下のようなエラーメッセージが返ってきます。

{"errorMessage":"User exists with same username"}

以上です。