OAuth 2.0 oferă multiple moduri de autorizare, dintre care Authorization Code Grant este cel mai folosit și sigur. code_challenge este o funcție îmbunătățită de securitate în cadrul acestui mod, folosită în principal pentru mecanismul PKCE (Proof Key for Code Exchange).
Ce este PKCE?
PKCE (Proof Key for Code Exchange) este o extensie concepută pentru a spori securitatea modelului de cod de autorizare OAuth 2.0, în special atunci când este folosit în clienți publici precum aplicații JavaScript sau aplicații mobile care rulează în browsere. PKCE previne interceptarea și utilizarea greșită a codurilor de autorizare prin adăugarea unui pas suplimentar de autentificare la cererile de autorizare.
code_challenge Rol
code_challenge face parte din mecanismul PKCE, generat și trimis în faza de cerere de autorizare. Se bazează pe o valoare secretă (numită code_verifier), transformată de un algoritm de hashing precum S256. Scopul code_challenge este de a oferi o bază de validare pentru cererile ulterioare de token, fără a expune direct code_verifier.
Generarea și utilizarea code_challenge și code_verifier
Generația code_verifier: code_verifier este un șir cu entropie mare, generat aleatoriu,Lungimea caracterului (între 43 și 128). Valoarea implicită este 43。
Generația code_challenge: Folosind code_verifier, code_challenge este generat printr-un algoritm de hashing (cum ar fi S256). Pentru S256, code_challenge este codarea URL Base64 a valorii hash code_verifier SHA-256, dar caracterul = de umplutură din codare trebuie eliminat, iar lungimea de ieșire trebuie să fie de 43 de caractere (deoarece după codificarea URL Base64, fiecare 4 caractere reprezintă 3 octeți, dar ultimul bloc de caractere poate avea mai puțin de 4 caractere, astfel încât lungimea poate varia ușor după eliminarea lui = caractere).
Folosiți code_challenge în cererile de autorizare: La inițierea unei cereri de autorizare, code_challenge este trimisă ca unul dintre parametrii solicitării către serverul de autorizare.
Folosirea code_verifier în cererile de token: Când serverul de autorizare returnează codul de autorizare, clientul folosește acest cod împreună cu code_verifier generat anterior pentru a solicita acces la punctul final al tokenului. Serverul de autorizare verifică dacă code_challenge și code_verifier se potrivesc, asigurând că cererea este inițiată de clientul original.
Generarea PKCE
Instrumente online de generare PKCE:Autentificarea cu hyperlink este vizibilă.
Codul C# este generat astfel:
Așa cum se arată mai jos:
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă. |