JSON Web Token (JWT) | |
Az első változat kelte | 2015. május |
---|---|
Szerző | M. Jones, J. Bradley és N. Sakimura |
Fejlesztő | IETF |
Szabványok | RFC 7519 |
Weboldal | jwt.io |
A JSON Web Token (JWT) az RFC 7519-ben meghatározott nyílt szabvány. Lehetővé teszi a tokenek biztonságos cseréjét több fél között. A csere ezen biztonsága tükröződik az adatok integritásának és hitelességének ellenőrzésében . A HMAC vagy RSA algoritmus hajtja végre .
A token három részből áll:
Online eszközök vannak azok megfejtésére.
A fejedben
{"typ": "jwt", "alg": "HS512"}Hasznos teher
{"name":"Wikipedia", "iat":1525777938}A fenti példában a fejlécben látjuk, hogy a token JSON web-token (JWT), és hogy az aláírásra használt algoritmus a HMAC-SHA512.
Az aláírás megszerzéséhez először külön kell kódolni a fejlécet és a hasznos terhet az RFC 4648- ban definiált Base64url-lel. Ezután összefűzzük őket úgy, hogy elválasztjuk őket egy ponttal. Ennek az eredménynek az aláírását kapjuk meg a választott algoritmussal. Ezt az aláírást ugyanúgy hozzáadják az eredményhez (kódolva és ponttal elválasztva).
Ne feledje, hogy a Base64url kódoláshoz a '=' kitöltő karakter nem kötelező, és nem fogja használni a JSON Web Token létrehozásakor az URL-ben történő továbbítás megkönnyítésére.
A fenti példából következik a JSON web Token megszerzésének különböző lépése.
Fejléc kódolása
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9Hasznos kódolás
eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQA két elem összefűzése, ponttal elválasztás
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQAz üzenet hitelesítési kódjának megszerzése a HMAC-SHA512 algoritmussal.
HMACSHA512(concatenation, 'ma super clé secrète')Kódkódolás (mindig a Base64url-lel )
iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NAA két elem összefűzése, ponttal elválasztás
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQ.iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NAA JWT specifikáció különféle szabványos mezőket (vagy paramétereket) kínál, igénypontoknak hívva :
Ezek a paraméterek nem kötelezőek. Egyszerűen lehetővé teszik egy token pontosabb meghatározását, és megerősítik annak biztonságát ( például egy token élettartamának korlátozásával).
A JWT megvalósítása számos programozási nyelven elérhető könyvtár sokaságán keresztül valósítható meg.
Itt van egy nem teljes lista azokról a programozási nyelvekről, amelyekhez JWT könyvtár tartozik: .NET , 1C , Ada , C , C ++ , Clojure , Crystal , D , Delphi , Elixir , Erlang , Go , Groovy , Haskell , Haxe , Java , JavaScript , kdb + / Q , Kotlin , Lua , Node.js , Objective-C , Perl , PHP , PostgreSQL , Python , Ruby , Rust , Scala , Swift .
Az RFC 7519 specifikáció maga is megvalósíthatja a JWT leírását.
A JWT-k a hitelesítés biztonságos eszközei. Vannak azonban olyan sérülékenységek, amelyek megelőzhetőek, ha körültekintően mérlegelik őket. Itt van egy nem teljes lista: