(O+P)ut

アウトプット



(O+P)ut

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

【Keycloak/RHBK】AdminAPIで100ユーザ以上の情報を一括で取得する

スポンサーリンク

やりたいこと

Red Hat build of Keycloak(Keycloakの商用版)にてAdmin API経由でユーザ情報を一気に取得する。尚、デフォルトでは100ユーザを上限として出力される。

環境情報
  • 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?max=XX」を利用すると(XXは表示したいユーザ数)100件以上のユーザ数が出力される。

$ curl -k -X GET http://localhost:8080/admin/realms/master/users?max=10000 -H "Authorization: Bearer "$AT 

以下、補足です。

補足

テスト用にユーザ数を5000程度用意をした上でjqによる抽出処理まで実行しましたが、1秒未満で完了しました。

$ time curl -k -X GET http://localhost:8080/admin/realms/master/users?max=10000 -H "Authorization: Bearer "$AT | jq .[].username,.[].id | sed -e 's/"//g' > test.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1399k    0 1399k    0     0  1911k      0 --:--:-- --:--:-- --:--:-- 1911k

real    0m0.766s
user    0m0.101s
sys     0m0.020s

ちなみにmaxへ大きな値を入れることもできましたが(1,000,000,000は成功)、特定の値以上にすると以下のようなエラーになる模様です。

$ curl -k -X GET http://localhost:8080/admin/realms/master/users?max=10000000000 -H "Authorization: Bearer "$AT
{"error":"RESTEASY003870: Unable to extract parameter from http request: jakarta.ws.rs.QueryParam(\"max\") value is '10000000000'"}

以上、ご参考になれば幸いです。