OAuth 2.0 erbjuder flera auktorisationslägen, bland vilka Authorization Code Grant är det mest använda och säkra. code_challenge är en säkerhetsförbättrad funktion inom detta läge, främst använd för PKCE (Proof Key for Code Exchange)-mekanismen.
Vad är PKCE?
PKCE (Proof Key for Code Exchange) är en tilläggsfunktion utformad för att förbättra säkerheten i OAuth 2.0-auktorisationskodmönstret, särskilt när det används i publika klienter såsom JavaScript-applikationer eller mobilappar som körs i webbläsare. PKCE förhindrar att auktorisationskoder avlyssnas och missbrukas genom att lägga till ett extra autentiseringssteg till auktorisationsförfrågningar.
code_challenge Roll
code_challenge är en del av PKCE-mekanismen, genererad och skickad under auktorisationsförfrågningsfasen. Den baseras på ett hemligt värde (kallat code_verifier), transformerat av en hashalgoritm som S256. Syftet med code_challenge är att tillhandahålla en valideringsgrund för efterföljande tokenförfrågningar utan att direkt exponera code_verifier.
Generering och användning av code_challenge och code_verifier
Generation code_verifier: code_verifier är en högentropi, slumpmässigt genererad sträng,Teckenlängd (mellan 43 och 128). Standardvärdet är 43。
Generation code_challenge: Med code_verifier genereras code_challenge genom en hashalgoritm (såsom S256). För S256 är code_challenge Base64-URL-kodningen av code_verifier SHA-256-hashvärdet, men =-utfyllningstecknet från kodningen måste tas bort, och utdatalängden måste vara 43 tecken (eftersom efter Base64 URL-kodning motsvarar varje 4 tecken 3 byte, men det sista teckenblocket kan vara mindre än 4 tecken, så längden kan variera något efter att = tecken tagits bort).
Använd code_challenge i auktorisationsförfrågningar: När en auktorisationsförfrågan initieras skickas code_challenge som en av förfrågningsparametrarna till auktorisationsservern.
Att använda code_verifier i tokenförfrågningar: När auktorisationsservern returnerar auktorisationskoden använder klienten denna kod tillsammans med den tidigare genererade code_verifier för att begära åtkomst till token-slutpunkten. Auktorisationsservern verifierar om code_challenge och code_verifier matchar, och säkerställer att begäran initieras av den ursprungliga klienten.
PKCE-generering
Online PKCE-genereringsverktyg:Inloggningen med hyperlänken är synlig.
C#-koden genereras enligt följande:
Som visas nedan:
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig. |