Keycloak PUT-isteği 401 döndürür (yetkisiz)

Jan 21 2021

Postacı kullanıyorum ve bir kullanıcının profilini http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} aracılığıyla güncellemeyi denedim ancak bir 401yanıt aldım .

Kullandığım prosedür:

  • Http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token aracılığıyla yönetici jetonu istendi ve alındı

  • Başlıklar için uygun yolu istemek için jeton eklendi, yani Yetkilendirme: Taşıyıcı {access_token}

  • Http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} aracılığıyla Json içerik türü ve kullanıcının bilgilerini gövde olarak içeren Put isteği gönderildi.

Ne yazık ki, arka arkaya 401 yanıtları aldım.

İlk istek:

-Body (x-www-form-urlencoded)

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

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

İkinci istek:

-Header -> Yetkilendirme: Taşıyıcı ...

Gövde (JSON)

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

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

Yanıtlar

1 dreamcrash Jan 22 2021 at 03:58

İlk aramanızda, davidkullanıcının yönetici gibi ayrıcalıklara sahip olması gerekir . Aksi takdirde davidkullanıcının gerçekleştirme yetkisine sahip olmadığı işlemler için yetkili hata cevabı alınır . Bir kullanıcıya yönetici ayrıcalıklarının nasıl atanacağını kontrol etmek için bu SO başlığına bir göz atın .

Şimdilik, ana yönetici kullanıcı adına aşağıdaki gibi bir belirteç talep edelim :

vücut yanıtından access_token.

Birinci, ikinci çağrı için, kopyalama ve yapıştırma access_tokeniçin Authorization > Type Bearer Token:

İkinci görüşmede yerine

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

userIDparametreyi userIDgüncellemekte olduğunuz kullanıcının gerçekiyle değiştirmeniz gerekir . Almak için userIDaşağıdaki uç noktayı arayabilirsiniz:

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

veya Keycloak Admin Console'dan kullanıcılar sekmesi altında kopyalayıp yapıştırabilirsiniz:

Yani Postacı'da şöyle görünür: