Keycloak PUT-リクエストは401(未承認)を返します
postmanを使用していて、http:// localhost:8180 / auth / admin / realms / demo / users / {userID}を介してユーザーのプロファイルを更新しようとしましたが、401
応答を受け取りました。
私が使用した手順:
http:// localhost:8180 / auth / realms / master / protocol / openid-connect / tokenを介して管理トークンを要求および受信しました
適切な方法でヘッダーをリクエストするためのトークンを追加しました。つまり、Authorization:Bearer {access_token}
http:// localhost:8180 / auth / admin / realms / demo / users / {userID}を介して、Jsonコンテンツタイプとユーザーの情報を本文としてPutリクエストを送信しました。
残念ながら、私は連続して401の応答を受け取りました。
最初のリクエスト:
-ボディ(x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-に http://localhost:8180/auth/realms/master/protocol/openid-connect/token
第二の要求:
-ヘッダー->承認:ベアラー..。
-ボディ(JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-に http://localhost:8180/auth/admin/realms/demo/users/{userID}
回答
最初の呼び出しでは、david
ユーザーは管理者と同様の権限を持つユーザーである必要があります。それ以外の場合は、david
ユーザーが実行する権限を持たないアクションに対して、許可されたエラー応答を受け取ります。このSOスレッドを見て、管理者のような特権をユーザーに割り当てる方法を確認してください。
今のところ、次のようにマスター管理ユーザーに代わってトークンをリクエストしましょう。
体の反応から抽出しaccess_token
ます。
最初の2回目の呼び出しでは、をコピーaccess_token
してAuthorization > Type Bearer Token
:に貼り付けます。
2回目の呼び出しでは、代わりに
http://localhost:8180/auth/admin/realms/demo/users/{userID}
userID
パラメータを、userID
更新するユーザーの実際のものに置き換える必要があります。取得userID
するには、次のエンドポイントを呼び出すことができます。
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
または、Keycloak管理コンソールの[ユーザー]タブからコピーして貼り付けることもできます。
したがって、Postmanでは次のようになります。