JSON Web Token (JWT) | |
Dato for første versjon | Mai 2015 |
---|---|
Forfatter | M. Jones, J. Bradley og N. Sakimura |
Utvikler | IETF |
Standarder | RFC 7519 |
Nettsted | jwt.io |
JSON Web Token (JWT) er en åpen standard definert i RFC 7519. Den muliggjør sikker utveksling av tokens mellom flere parter. Denne utvekslingssikkerheten gjenspeiles i verifiseringen av dataintegriteten og ektheten . Det utføres av HMAC- eller RSA-algoritmen .
Et token består av tre deler:
Det finnes elektroniske verktøy for å tyde dem.
I tankene dine
{"typ": "jwt", "alg": "HS512"}Nyttelast
{"name":"Wikipedia", "iat":1525777938}I eksemplet ovenfor ser vi i overskriften at tokenet er et JSON Web Token (JWT) og at algoritmen som brukes til signering er HMAC-SHA512.
For å få signaturen, må vi først kode toppteksten og nyttelasten med Base64url definert i RFC 4648. Deretter sammenkoble vi dem ved å skille dem med en periode. Vi får signaturen til dette resultatet med den valgte algoritmen. Denne signaturen blir lagt til resultatet på samme måte (kodet og atskilt med en periode).
Merk at for Base64url- koding er ikke fyllertegnet '=' obligatorisk og vil ikke bli brukt til å lage JSON Web Token for å lette overføring i en URL.
Fra eksemplet ovenfor er her de forskjellige trinnene for å skaffe et JSON Web Token.
Topptekstkoding
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9Nyttelastkoding
eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQSammenkobling av de to elementene, separasjon med et punkt
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQÅ skaffe meldingsautentiseringskoden med HMAC-SHA512-algoritmen.
HMACSHA512(concatenation, 'ma super clé secrète')Kodekoding (alltid med Base64url )
iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NASammenkobling av de to elementene, separasjon med et punkt
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQ.iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NAJWT-spesifikasjonen tilbyr forskjellige standardfelt (eller parametere), kalt krav :
Alle disse parametrene er valgfrie. De lar bare et token defineres mer presist og forsterker dets sikkerhet ( f.eks. Ved å begrense et tokens levetid).
Implementeringen av JWT kan gjøres gjennom en mengde biblioteker tilgjengelig på mange programmeringsspråk.
Her er en ikke-uttømmende liste over programmeringsspråk som det finnes et JWT-bibliotek for: .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 .
Det er også mulig å implementere RFC 7519- spesifikasjonen som beskriver JWT selv .
JWT er et sikkert middel for autentisering. Det er imidlertid visse sårbarheter som kan forhindres ved å vurdere dem med omhu. Her er en ikke-uttømmende liste: