Keycloak PUT-request mengembalikan 401 (tidak sah)

Jan 21 2021

Saya menggunakan tukang pos dan saya sudah mencoba memperbarui profil pengguna melalui http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} tetapi saya menerima 401tanggapan.

Prosedur yang saya gunakan:

  • Meminta dan menerima token admin melalui http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token

  • Menambahkan token untuk meminta header dengan cara yang sesuai yaitu Otorisasi: Bearer {access_token}

  • Mengirim permintaan Put dengan jenis konten Json dan info pengguna sebagai body melalui http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.

Sayangnya, saya menerima tanggapan 401 berturut-turut.

Permintaan pertama:

-Badan (x-www-form-urlencoded)

client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...

-Untuk http://localhost:8180/auth/realms/master/protocol/openid-connect/token

Permintaan kedua:

-Header -> Otorisasi: Pembawa ...

-Badan (JSON)

"email": "[email protected]",
"firstName": "divad",
"lastName": "d"

-Untuk http://localhost:8180/auth/admin/realms/demo/users/{userID}

Jawaban

1 dreamcrash Jan 22 2021 at 03:58

Dalam panggilan pertama Anda, davidpengguna harus menjadi salah satu pengguna dengan hak istimewa serupa admin . Jika tidak, seseorang mendapat respons kesalahan resmi untuk tindakan yang davidtidak memiliki hak istimewa untuk dilakukan oleh pengguna. Lihat utas SO ini untuk memeriksa cara menetapkan hak istimewa mirip admin kepada pengguna.

Untuk saat ini mari kita meminta token atas nama pengguna admin master sebagai berikut:

dari respon tubuh ekstrak access_token.

Untuk panggilan kedua pertama, salin dan tempel access_tokenke Authorization > Type Bearer Token:

Pada panggilan kedua, bukan

http://localhost:8180/auth/admin/realms/demo/users/{userID} 

Anda perlu mengganti userIDparameter dengan pengguna aktual userIDyang Anda perbarui. Untuk mendapatkan userIDAnda dapat memanggil titik akhir berikut:

GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>

atau Anda dapat menyalin dan menempel dari Konsol Admin Keycloak, di bawah tab pengguna:

Jadi di Postman akan terlihat seperti: