Keycloak PUT- 요청은 401 (승인되지 않음)을 반환합니다.

Jan 21 2021

우편 배달부를 사용하고 있으며 http : // localhost : 8180 / auth / admin / realms / demo / users / {userID}를 통해 사용자 프로필 업데이트를 시도했지만 401응답을 받았습니다 .

내가 사용한 절차 :

  • http : // localhost : 8180 / auth / realms / master / protocol / openid-connect / token을 통해 요청 및 수신 된 관리자 토큰

  • 적절한 방식으로 요청 헤더에 토큰을 추가했습니다. 예 : 승인 : 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

두 번째 요청:

-Header-> Authorization : Bearer ...

-바디 (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.

먼저 두 번째 호출의 경우을 복사하여에 붙여 넣 access_token습니다 Authorization > Type Bearer Token.

두 번째 호출에서 대신

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에서는 다음과 같습니다.