OAuth 2.0 ponúka viacero režimov autorizácie, medzi ktorými je Authorization Code Grant najčastejšie používaný a najbezpečnejší. code_challenge je bezpečnostne vylepšená funkcia v tomto režime, hlavne používaná pre mechanizmus PKCE (Proof Key for Code Exchange).
Čo je PKCE?
PKCE (Proof Key for Code Exchange) je rozšírenie navrhnuté na zvýšenie bezpečnosti vzoru autorizačného kódu OAuth 2.0, najmä pri použití vo verejných klientoch, ako sú JavaScriptové aplikácie alebo mobilné aplikácie bežiace v prehliadačoch. PKCE zabraňuje zachyteniu a zneužitiu autorizačných kódov pridaním ďalšieho autentifikačného kroku k autorizačným požiadavkám.
code_challenge Úloha
code_challenge je súčasťou mechanizmu PKCE, generovaný a odosielaný počas fázy požiadavky na autorizáciu. Je založený na tajnej hodnote (nazývanej code_verifier), transformovanej hashovacím algoritmom, ako je S256. Účelom code_challenge je poskytnúť validačný základ pre nasledujúce požiadavky na token bez priameho vystavenia code_verifier.
Generovanie a využívanie code_challenge a code_verifier
Generácia code_verifier: code_verifier je reťazec s vysokou entropiou, náhodne generovaný,Dĺžka znaku (medzi 43 a 128). Predvolená hodnota je 43。
Generácia code_challenge: Použitím code_verifier sa code_challenge generuje pomocou hashovacieho algoritmu (napríklad S256). Pre S256 je code_challenge kódovanie URL Base64 hodnoty code_verifier SHA-256, ale = vyplňovací znak z kódovania musí byť odstránený a výstupná dĺžka musí byť 43 znakov (keďže po Base64 URL kódovaní každé 4 znaky predstavujú 3 bajty, ale posledný blok znakov môže byť menší ako 4 znaky, takže dĺžka sa môže mierne líšiť po odstránení = znakov).
Použite code_challenge pri žiadostiach o autorizáciu: Pri iniciovaní požiadavky na autorizáciu sa code_challenge odosiela ako jeden z parametrov požiadavky na autorizačný server.
Použitie code_verifier pri požiadavkách na tokeny: Keď autorizačný server vráti autorizačný kód, klient použije tento kód spolu s predtým vygenerovaným code_verifier na požiadanie o prístup k tokenovému koncovému bodu. Autorizačný server overuje, či code_challenge a code_verifier súhlasia, čím zabezpečuje, že požiadavka je iniciovaná pôvodným klientom.
Generovanie PKCE
Online nástroje na generovanie PKCE:Prihlásenie na hypertextový odkaz je viditeľné.
C# kód sa generuje nasledovne:
Ako je uvedené nižšie:
Referencia:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné. |