Snažím sa nastaviť OAuth2 pre Django + Rest Framework pomocou nástroja Django OAuth Toolkit a tu je hádanka, ktorú nemôžem pochopiť pri používaní typu autorizácie "Vlastník zdroja založený na heslách".
Môžem úspešne získať access_token pre toho istého používateľa, ktorý zaregistroval aplikáciu (Klientský vlastník) pomocou:
Keď sa však pokúšam použiť rovnaký klient_id a client_secret, ale zmeniť username
a password
pre iného používateľa
{
"error_description": "Invalid credentials given.",
"error": "invalid_grant"
}
Takže sa zdá, že registrovaná aplikácia môžepoužíva sa iba jeden "vlastník zdroja" - samotný vlastník aplikácie (klient), ktorý robí typ autorizácie typu "vlastník zdroja" zbytočným, pretože funguje rovnako ako "poverenia klienta", ale bez použitia "používateľského mena" a " password ". Inými slovami, potrebujem zaregistrovanú žiadosť, aby som konal v mene iného používateľa, a nie používateľ, ktorý žiadosť zaregistroval (ja), ale nemôžem sa jej obísť.
Samozrejme, že vždy môžem napísať vlastný autorizačný kód, ale nemal by byť podporovaný z krabice (zaujímalo by ma to)?
odpovede:
0 pre odpoveď č. 1Problémom bola jednoduchá nesprávna konfigurácia a zneužitie, čo viedlo k nejednoznačnému správaniu.
Toto funguje:
- base64 kódovaná hlavička "Autorizácia" (
client_id:client_secret
) - Uistite sa, že nastavenia aplikácie sú nastavené na "vlastné zdroje založené na heslách". Upozorňujeme, že to nemôže byť "verejné",
client_secret
je absolútne nevyhnutné pre tento prietok.