Keycloak PUT-request ส่งคืน 401 (ไม่ได้รับอนุญาต)
ฉันใช้บุรุษไปรษณีย์และได้ลองอัปเดตโปรไฟล์ของผู้ใช้ผ่าน 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}
คำตอบ
ในการโทรครั้งแรก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 ใต้แท็บผู้ใช้:
ดังนั้นในบุรุษไปรษณีย์จะมีลักษณะดังนี้: