Keycloak PUT-request ส่งคืน 401 (ไม่ได้รับอนุญาต)

Jan 21 2021

ฉันใช้บุรุษไปรษณีย์และได้ลองอัปเดตโปรไฟล์ของผู้ใช้ผ่าน http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} แต่ฉันได้รับการ401ตอบกลับ

ขั้นตอนที่ฉันใช้:

  • โทเค็นผู้ดูแลระบบที่ร้องขอและรับผ่าน http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token

  • เพิ่มโทเค็นเพื่อขอส่วนหัวด้วยวิธีที่เหมาะสมเช่น Authorization: Bearer {access_token}

  • ส่งคำขอใส่ที่มีประเภทเนื้อหา Json และข้อมูลของผู้ใช้เป็นเนื้อหาผ่าน http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}

น่าเสียดายที่ฉันได้รับการตอบกลับ 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.

สำหรับการโทรครั้งที่สองก่อนอื่นให้คัดลอกและวาง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 ใต้แท็บผู้ใช้:

ดังนั้นในบุรุษไปรษณีย์จะมีลักษณะดังนี้: