Keycloak PUT-リクエストは401(未承認)を返します

Jan 21 2021

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}

回答

1 dreamcrash Jan 22 2021 at 03:58

最初の呼び出しでは、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では次のようになります。