OAuth 2.0 ponuja več načinov avtorizacije, med katerimi je Authorization Code Grant najpogosteje uporabljen in varen. code_challenge je varnostno izboljšana funkcija v tem načinu, ki se večinoma uporablja za mehanizem PKCE (Proof Key for Code Exchange).
Kaj je PKCE?
PKCE (Proof Key for Code Exchange) je razširitev, zasnovana za izboljšanje varnosti vzorca avtorizacijske kode OAuth 2.0, še posebej, kadar se uporablja v javnih odjemalcih, kot so JavaScript aplikacije ali mobilne aplikacije, ki tečejo v brskalnikih. PKCE preprečuje prestrezanje in zlorabo avtorizacijskih kod z dodajanjem dodatnega koraka za avtentikacijo k zahtevam za avtorizacijo.
code_challenge vloga
code_challenge je del mehanizma PKCE, ki se generira in pošilja med fazo zahteve za avtorizacijo. Temelji na skrivni vrednosti (imenovani code_verifier), ki jo pretvori algoritem za zgoščevanje, kot je S256. Namen code_challenge je zagotoviti validacijsko osnovo za nadaljnje zahteve žetonov, ne da bi neposredno izpostavil code_verifier.
Generiranje in uporaba code_challenge in code_verifier
Generacija code_verifier: code_verifier je struna z visoko entropijo, naključno generirana,Dolžina znaka (med 43 in 128). Privzeta vrednost je 43。
Generacija code_challenge: Z uporabo code_verifier se code_challenge generira z algoritmom za zgoščevanje (kot je S256). Za S256 je code_challenge Base64 URL kodiranje vrednosti code_verifier SHA-256, vendar je treba odstraniti = zapolnjevalni znak iz kodiranja, izhodna dolžina pa mora biti 43 znakov (saj po kodiranju URL-jev v Base64 vsakih 4 znaki predstavljajo 3 bajte, vendar je zadnji blok znakov lahko manjši od 4 znakov, zato se dolžina lahko po odstranitvi = znakov rahlo razlikuje).
Uporabite code_challenge pri zahtevah za avtorizacijo: Ob začetku zahteve za avtorizacijo se code_challenge pošlje kot eden od parametrov zahteve strežniku za avtorizacijo.
Uporaba code_verifier pri zahtevkih za žetone: Ko strežnik za avtorizacijo vrne avtorizacijsko kodo, odjemalec uporabi to kodo skupaj s prej generirano code_verifier za zahtevo dostopa do končne točke žetona. Strežnik za avtorizacijo preveri, ali se code_challenge in code_verifier ujemata, s čimer zagotovi, da zahtevo sproži originalni odjemalec.
Generiranje PKCE
Spletna orodja za generiranje PKCE:Prijava do hiperpovezave je vidna.
C# koda se generira na naslednji način:
Kot je prikazano spodaj:
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna. |