OAuth 2.0 piedāvā vairākus autorizācijas režīmus, no kuriem visbiežāk izmantotais un drošākais ir Autorizācijas koda piešķīrums. code_challenge ir drošības uzlabota funkcija šajā režīmā, galvenokārt izmantota PKCE (Proof Key for Code Exchange) mehānismā.
Kas ir PKCE?
PKCE (Proof Key for Code Exchange) ir paplašinājums, kas izstrādāts, lai uzlabotu OAuth 2.0 autorizācijas koda modeļa drošību, īpaši publiskajos klientos, piemēram, JavaScript lietotnēs vai mobilajās lietotnēs, kas darbojas pārlūkprogrammās. PKCE novērš autorizācijas kodu pārtveršanu un ļaunprātīgu izmantošanu, pievienojot papildu autentifikācijas soli autorizācijas pieprasījumiem.
code_challenge Loma
code_challenge ir daļa no PKCE mehānisma, kas tiek ģenerēts un nosūtīts autorizācijas pieprasījuma fāzē. Tas balstās uz slepenu vērtību (saukta par code_verifier), kas pārveidota ar hašēšanas algoritmu, piemēram, S256. code_challenge mērķis ir nodrošināt validācijas pamatu turpmākiem tokenu pieprasījumiem, tieši neatklājot code_verifier.
code_challenge un code_verifier ģenerēšana un izmantošana
code_verifier. paaudze: code_verifier ir augstas entropijas, nejauši ģenerēta virkne,Rakstzīmju garums (no 43 līdz 128). Noklusējuma vērtība ir 43。
code_challenge. paaudze: Izmantojot code_verifier, code_challenge tiek ģenerēts ar hašēšanas algoritmu (piemēram, S256). S256 gadījumā code_challenge ir Base64 URL kodējums code_verifier SHA-256 haša vērtībai, bet = aizpildījuma rakstzīme no kodējuma ir jānoņem un izvades garumam jābūt 43 rakstzīmēm (jo pēc Base64 URL kodēšanas katras 4 rakstzīmes nozīmē 3 baitus, bet pēdējais rakstzīmju bloks var būt mazāks par 4 rakstzīmēm, tāpēc garums var nedaudz atšķirties pēc = rakstzīmju noņemšanas).
Izmantojiet code_challenge autorizācijas pieprasījumos: Uzsākot autorizācijas pieprasījumu, code_challenge tiek nosūtīts kā viens no pieprasījuma parametriem autorizācijas serverim.
Izmantojot code_verifier tokenu pieprasījumos: Kad autorizācijas serveris atgriež autorizācijas kodu, klients izmanto šo kodu kopā ar iepriekš ģenerēto code_verifier, lai pieprasītu piekļuvi tokena galapunktam. Autorizācijas serveris pārbauda, vai code_challenge un code_verifier sakrīt, nodrošinot, ka pieprasījumu iniciē oriģinālais klients.
PKCE ģenerācija
Tiešsaistes PKCE ģenerēšanas rīki:Hipersaites pieteikšanās ir redzama.
C# kods tiek ģenerēts šādi:
Kā parādīts zemāk:
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama. |