OAuth 2.0 tarjoaa useita valtuutustiloja, joista Authorization Code Grant on yleisimmin käytetty ja turvallisin. code_challenge on tämän tilan tietoturvaa parantava ominaisuus, jota käytetään pääasiassa PKCE (Proof Key for Code Exchange) -mekanismissa.
Mikä on PKCE?
PKCE (Proof Key for Code Exchange) on laajennus, joka on suunniteltu parantamaan OAuth 2.0 -valtuutuskoodimallin turvallisuutta, erityisesti julkisissa asiakkaissa, kuten JavaScript-sovelluksissa tai selaimissa ajetuissa mobiilisovelluksissa. PKCE estää valtuutuskoodien sieppauksen ja väärinkäytön lisäämällä valtuutuspyyntöihin uuden todennusvaiheen.
code_challenge Rooli
code_challenge on osa PKCE-mekanismia, joka luodaan ja lähetetään valtuutuspyynnön vaiheessa. Se perustuu salaiseen arvoon (nimeltään code_verifier), joka muunnetaan hajautusalgoritmilla, kuten S256. code_challenge:n tarkoituksena on tarjota validointipohja myöhemmille token-pyynnöille paljastamatta suoraan code_verifier.
code_challenge ja code_verifier generointi ja käyttö
Sukupolvi code_verifier: code_verifier on korkean entropian satunnaisesti generoitu merkkijono,Merkkien pituus (välillä 43–128). Oletusarvo on 43。
Sukupolvi code_challenge: code_verifier:n avulla code_challenge generoidaan hajautusalgoritmilla (kuten S256). S256:ssa code_challenge on Base64-URL-koodaus code_verifier SHA-256:n hajautusarvolle, mutta = täytemerkki on poistettava koodauksesta, ja tulostuspituuden on oltava 43 merkkiä (koska Base64-URL-koodauksen jälkeen jokainen 4 merkkiä edustaa 3 tavua, mutta viimeinen merkkilohko voi olla alle 4 merkkiä, joten pituus voi vaihdella hieman = merkin poistamisen jälkeen).
Käytä code_challenge valtuutuspyynnöissä: Valtuutuspyyntöä käynnistettäessä code_challenge lähetetään yhtenä pyyntöparametreista valtuutuspalvelimelle.
code_verifier käyttö token-pyynnöissä: Kun valtuutuspalvelin palauttaa valtuutuskoodin, asiakas käyttää tätä koodia yhdessä aiemmin luodun code_verifier kanssa pyytääkseen pääsyä token-päätepisteelle. Valtuutuspalvelin varmistaa, täsmäävätkö code_challenge ja code_verifier, varmistaen, että pyyntö käynnistetään alkuperäisen asiakkaan toimesta.
PKCE-tuotanto
Verkossa toimivat PKCE-generointityökalut:Hyperlinkin kirjautuminen on näkyvissä.
C#-koodi generoidaan seuraavasti:
Kuten alla on esitetty:
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä. |