OAuth 2.0 nabízí více režimů autorizace, mezi nimiž je Authorization Code Grant nejčastěji používaný a nejbezpečnější. code_challenge je bezpečnostní vylepšená funkce v tomto režimu, která se používá především pro mechanismus PKCE (Proof Key for Code Exchange).
Co je PKCE?
PKCE (Proof Key for Code Exchange) je rozšíření navržené ke zvýšení bezpečnosti vzoru autorizačního kódu OAuth 2.0, zejména při použití ve veřejných klientech, jako jsou JavaScriptové aplikace nebo mobilní aplikace běžící v prohlížečích. PKCE zabraňuje zachycení a zneužití autorizačních kódů přidáním dalšího autentizačního kroku k autorizačním požadavkům.
code_challenge role
code_challenge je součástí mechanismu PKCE, generovaný a odesílán během fáze žádosti o autorizaci. Je založen na tajné hodnotě (nazývané code_verifier), která je transformována hashovacím algoritmem, například S256. Účelem code_challenge je poskytnout validační základ pro následné požadavky na token bez přímého vystavení code_verifier.
Generování a využití code_challenge a code_verifier
Generace code_verifier: code_verifier je struna s vysokou entropií, náhodně generovaná,Délka znaku (mezi 43 a 128). Výchozí hodnota je 43。
Generace code_challenge: Pomocí code_verifier je code_challenge generován pomocí hashovacího algoritmu (například S256). Pro S256 je code_challenge kódování URL code_verifier hodnoty SHA-256 v Base64, ale znak = vyplňování z kódování musí být odstraněn a délka výstupu musí být 43 znaků (protože po kódování URL Base64 každé 4 znaky představují 3 bajty, ale poslední blok znaků může být menší než 4 znaky, takže délka se může mírně lišit po odstranění = znaků).
Použijte code_challenge při žádostech o autorizaci: Při zahájení autorizačního požadavku je code_challenge odeslán jako jeden z parametrů požadavku na autorizační server.
Použití code_verifier v požadavcích na tokeny: Když autorizační server vrátí autorizační kód, klient použije tento kód spolu s dříve vygenerovaným code_verifier k žádosti o přístup k tokenovému endpointu. Autorizační server ověřuje, zda code_challenge a code_verifier souhlasí, čímž zajišťuje, že požadavek iniciuje původní klient.
Generování PKCE
Online nástroje pro generování PKCE:Přihlášení k hypertextovému odkazu je viditelné.
Kód v C# se generuje následovně:
Jak je uvedeno níže:
Odkaz:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné. |