OAuth 2.0 tilbyder flere autorisationstilstande, hvoraf Authorization Code Grant er den mest anvendte og sikre. code_challenge er en sikkerhedsforbedret funktion inden for denne tilstand, hovedsageligt brugt til PKCE (Proof Key for Code Exchange)-mekanismen.
Hvad er PKCE?
PKCE (Proof Key for Code Exchange) er en udvidelse designet til at forbedre sikkerheden i OAuth 2.0-autorisationskodemønsteret, især når den bruges i offentlige klienter som JavaScript-applikationer eller mobilapps, der kører i browsere. PKCE forhindrer, at autorisationskoder bliver opsnappet og misbrugt ved at tilføje et ekstra autentificeringstrin til autorisationsanmodninger.
code_challenge Rolle
code_challenge er en del af PKCE-mekanismen, genereret og sendt under autorisationsanmodningsfasen. Den er baseret på en hemmelig værdi (kaldet code_verifier), transformeret af en hashing-algoritme som S256. Formålet med code_challenge er at give et valideringsgrundlag for efterfølgende tokenanmodninger uden direkte at eksponere code_verifier.
Generering og brug af code_challenge og code_verifier
Generation code_verifier: code_verifier er en streng med høj entropi, tilfældigt genereret streng,Tegnlængde (mellem 43 og 128). Standardværdien er 43。
Generation code_challenge: Ved at bruge code_verifier genereres code_challenge gennem en hashing-algoritme (såsom S256). For S256 er code_challenge Base64 URL-kodningen af code_verifier SHA-256 hashværdien, men = udfyldningstegnet fra kodningen skal fjernes, og outputlængden skal være 43 tegn (da efter Base64 URL-kodning repræsenterer hver 4 tegn 3 bytes, men den sidste tegnblok kan være mindre end 4 tegn, så længden kan variere lidt efter fjernelse af = tegn).
Brug code_challenge i autorisationsanmodninger: Når en autorisationsanmodning initieres, sendes code_challenge som en af anmodningsparametrene til autorisationsserveren.
Brug af code_verifier i tokenanmodninger: Når autorisationsserveren returnerer autorisationskoden, bruger klienten denne kode sammen med den tidligere genererede code_verifier til at anmode om adgang til token-endpointet. Autorisationsserveren verificerer, om code_challenge og code_verifier matcher, og sikrer, at anmodningen initieres af den oprindelige klient.
PKCE-generering
Online værktøjer til generering af PKCE:Hyperlink-login er synlig.
C#-koden genereres som følger:
Som vist nedenfor:
Henvisning:
Hyperlink-login er synlig.
Hyperlink-login er synlig. |