OAuth 2.0 tilbyr flere autorisasjonsmoduser, hvorav Authorization Code Grant er den mest brukte og sikre. code_challenge er en sikkerhetsforbedret funksjon i denne modusen, hovedsakelig brukt for PKCE (Proof Key for Code Exchange)-mekanismen.
Hva er PKCE?
PKCE (Proof Key for Code Exchange) er en utvidelse utviklet for å forbedre sikkerheten til OAuth 2.0-autorisasjonskodemønsteret, spesielt når det brukes i offentlige klienter som JavaScript-applikasjoner eller mobilapper som kjører i nettlesere. PKCE forhindrer at autorisasjonskoder blir avlyttet og misbrukt ved å legge til et ekstra autentiseringstrinn i autorisasjonsforespørsler.
code_challenge Rolle
code_challenge er en del av PKCE-mekanismen, generert og sendt under autorisasjonsfasen. Den er basert på en hemmelig verdi (kalt code_verifier), transformert av en hashing-algoritme som S256. Formålet med code_challenge er å gi et valideringsgrunnlag for påfølgende tokenforespørsler uten å eksponere code_verifier direkte.
Generering og bruk av code_challenge og code_verifier
Generasjon code_verifier: code_verifier er en høy-entropi, tilfeldig generert streng,Tegnlengde (mellom 43 og 128). Standardverdien er 43。
Generasjon code_challenge: Ved å bruke code_verifier genereres code_challenge gjennom en hashing-algoritme (som S256). For S256 er code_challenge Base64-URL-kodingen av code_verifier SHA-256-hashverdien, men = utfyllingstegnet fra kodingen må fjernes, og utdatalengden må være 43 tegn (siden etter Base64 URL-koding representerer hver 4 tegn 3 bytes, men den siste tegnblokken kan være mindre enn 4 tegn, så lengden kan variere litt etter fjerning av = tegn).
Bruk code_challenge i autorisasjonsforespørsler: Når en autorisasjonsforespørsel initieres, sendes code_challenge som en av forespørselsparametrene til autorisasjonsserveren.
Å bruke code_verifier i tokenforespørsler: Når autorisasjonsserveren returnerer autorisasjonskoden, bruker klienten denne koden sammen med den tidligere genererte code_verifier for å be om tilgang til token-endepunktet. Autorisasjonsserveren verifiserer om code_challenge og code_verifier stemmer, og sikrer at forespørselen initieres av den opprinnelige klienten.
PKCE-generering
Nettbaserte verktøy for PKCE-generering:Innloggingen med hyperkoblingen er synlig.
C#-koden genereres som følger:
Som vist nedenfor:
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig. |