OAuth 2.0 siūlo kelis autorizacijos režimus, iš kurių dažniausiai naudojamas ir saugus yra Autorizacijos kodo suteikimas. code_challenge yra saugumo pagerinta funkcija šiame režime, daugiausia naudojama PKCE (Proof Key for Code Exchange) mechanizme.
Kas yra PKCE?
PKCE (Proof Key for Code Exchange) yra plėtinys, skirtas sustiprinti OAuth 2.0 autorizacijos kodo modelio saugumą, ypač naudojant viešuosiuose klientuose, tokiuose kaip JavaScript programos ar naršyklėse veikiančios mobiliosios programėlės. PKCE apsaugo nuo autorizacijos kodų perėmimo ir netinkamo naudojimo, pridėdamas papildomą autentifikacijos žingsnį prie autorizacijos užklausų.
code_challenge Vaidmuo
code_challenge yra PKCE mechanizmo dalis, generuojama ir siunčiama autorizacijos užklausos etape. Ji pagrįsta slapta reikšme (vadinama code_verifier), transformuojama naudojant maišos algoritmą, pavyzdžiui, S256. code_challenge tikslas – suteikti validacijos pagrindą vėlesniems žetonų prašymams, tiesiogiai neatskleidžiant code_verifier.
code_challenge ir code_verifier generavimas bei naudojimas
code_verifier karta: code_verifier yra didelės entropijos, atsitiktinai generuojama styga,Simbolių ilgis (nuo 43 iki 128). Numatytoji reikšmė yra 43。
code_challenge karta: Naudojant code_verifier, code_challenge generuojama naudojant maišos algoritmą (pvz., S256). S256 atveju code_challenge yra Base64 URL kodavimas code_verifier SHA-256 maišos reikšmei, tačiau = užpildymo simbolis iš kodavimo turi būti pašalintas, o išvesties ilgis turi būti 43 simboliai (kadangi po Base64 URL kodavimo kas 4 simboliai atitinka 3 baitus, tačiau paskutinis simbolių blokas gali būti mažesnis nei 4 simboliai, todėl ilgis gali šiek tiek skirtis pašalinus = simbolius).
Naudokite code_challenge autorizacijos užklausose: Inicijuojant autorizacijos užklausą, code_challenge siunčiama kaip vienas iš užklausos parametrų autorizacijos serveriui.
Naudojant code_verifier žetonų užklausose: Kai autorizacijos serveris grąžina autorizacijos kodą, klientas naudoja šį kodą kartu su anksčiau sugeneruotu code_verifier, kad prašytų prieigos prie žetono galinio taško. Autorizacijos serveris patikrina, ar code_challenge ir code_verifier sutampa, užtikrindamas, kad užklausa būtų inicijuota originalaus kliento.
PKCE generavimas
Internetiniai PKCE generavimo įrankiai:Hipersaito prisijungimas matomas.
C# kodas generuojamas taip:
Kaip parodyta žemiau:
Nuoroda:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas. |