やりたいこと
Red Hat build of Keycloak(Keycloakの商用版)にてAdmin API経由でユーザ名(username)からidを取得する。
環境情報
- 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'`
アクセストークンを引数に渡した上で「GET /admin/realms/{realm}/users?search=XX」を利用すると(XXは検索したいユーザ名)
$ curl -k -X GET http://localhost:8080/admin/realms/master/users?search=test-user02 -H "Authorization: Bearer "$AT | jq .
JSON形式で出力ができる。
[ { "id": "XX-XX-XX-XX", "createdTimestamp": ..., "username": "test-user02", ... } } ]
以下、補足です。
補足
以下記事のように個別ユーザに対して操作を行う場合はidと呼ばれるユーザ固有の値が必要ですが同値は内部的にKeycloakが採番するためユーザは分かりません。
よってユーザ名からIDを取得する必要があります。
尚、同検索は前方一致の仕様なので該当するユーザが複数いる場合は全て表示されてしまう点は注意が必要です。
以上、ご参考になれば幸いです。