web-dev-qa-db-ja.com

curlコマンドからKeycloakでユーザーを作成します

現在、KeycloakのAdmin REST APIを介してcurlコマンドからユーザーを作成しようとしています。管理者として自分自身を認証できます。良い答えがありますが、ユーザーを作成したい場合は、 「404-見つかりません」のようなエラー。

これが私のcurlコマンドです:

#!/bin/bash

echo "* Request for authorization"
RESULT=`curl --data "username=pierre&password=pierre&grant_type=password&client_id=admin-cli" http://localhost:8080/auth/realms/master/protocol/openid-connect/token`

echo "\n"
echo "* Recovery of the token"
TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

echo "\n"
echo "* Display token"
echo $TOKEN

echo "\n"
echo " * user creation\n"
curl   http://localhost:8080/apiv2/users -H "Authorization: bearer $TOKEN"   --data '{"firstName":"xyz","lastName":"xyz", "email":"[email protected]", "enabled":"true"}'

次のアドレスにある公式APIドキュメントを使用しました: https://www.keycloak.org/docs-api/4.4/rest-api/index.html

enter image description here

このエラーがあります: enter image description here

私の領域は良いです enter image description here

どうすれば修正できますか?前もって感謝します。

3
pi-2r

これを試して、コンテンツタイプヘッダーを追加し、URLを変更します:

#!/bin/bash

echo "* Request for authorization"
RESULT=`curl --data "username=admin&password=Pa55w0rd&grant_type=password&client_id=admin-cli" http://localhost:8080/auth/realms/master/protocol/openid-connect/token`

echo "\n"
echo "* Recovery of the token"
TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

echo "\n"
echo "* Display token"
echo $TOKEN

echo "\n"
echo " * user creation\n"
curl -v http://localhost:8080/auth/admin/realms/apiv2/users -H "Content-Type: application/json" -H "Authorization: bearer $TOKEN"   --data '{"firstName":"xyz","lastName":"xyz", "email":"[email protected]", "enabled":"true"}'
9
Kilian

Keycloakのドキュメント( サーバー管理>管理CLI>基本操作とリソースURI )によると、usersエンドポイントは次のようになります。

http://localhost:8080/auth/admin/realms/apiv2/users

したがって、それに応じて最後のURLを修正してください。

完全な例は KeycloakのJIRA問題#538 にもあります。 content-typeヘッダーも明示的に追加していることに注意してください。

Content-Type: application/json

2