Najlepsze pytania
Chronologia
Czat
Perspektywa
JSON Web Token
Z Wikipedii, wolnej encyklopedii
Remove ads
JSON Web Token, JWT – otwarty standard przemysłowy, definiujący sposób wymiany danych komputerowych między określonymi stronami za pośrednictwem dokumentów JSON. Został zaproponowany w maju 2015 przez stowarzyszenie IETF w dokumencie RFC 7519 ↓. Na jego główne zastosowania wskazano proces uwierzytelniania użytkownika oraz bezpiecznej wymiany informacji[1].
Remove ads
Struktura tokenu[2]
Podsumowanie
Perspektywa
Tokeny JWT tworzone są z trzech niezależnych części składowych oddzielanych znakiem kropki:
nagłówek.ładunek.podpis
Zawartości poszczególnych części w tokenie są kodowane według standardu RFC 4648 ↓ (Base64Url), które posłużą do utworzenia właściwego tokenu.
Nagłówek
Nagłówek jest osobnym dokumentem JSON, informującym o typie przekazywanego tokenu (pole typ
, w tym przypadku: JWT) oraz o zastosowanym algorytmie szyfrowania asymetrycznego (pole alg
), takimi jak HMAC, RSA czy ECDSA.
Na przykład, dla tokenu typu JWT, szyfrowanego algorytmem HMAC-SHA256, nagłówek będzie zawierał poniższy dokument:
{
"alg": "HS256",
"typ": "JWT"
}
Ładunek
Główną częścią JWT jest przekazywany ładunek (tzw. payload). W postaci dokumentu JSON dostarcza dane, które jedna ze stron chce przekazać.
Przykładowo, przekazując dane sesji określonego zalogowanego użytkownika, zawierające jego identyfikator logowania oraz uprawnienia w witrynie internetowej, mogłyby wyglądać następująco:
{
"login": "John_Doe",
"isAdmin": true
}
Sygnatura
Sygnatura (nazywana również podpisem) jest używany do weryfikacji autentyczności utworzonego tokenu JWT. Jest tworzony i szyfrowany wybranym algorytmem na podstawie zakodowanego nagłówka i ładunku tokenu z opcjonalnym kluczem szyfrowania.
Remove ads
Użycie
Podczas procesu autoryzacji użytkownika z użyciem JWT, przy poprawnym jego zalogowaniu jest zwracany wygenerowany token, który zostaje przechowany w danych lokalnych przeglądarki internetowej – na przykład w pamięci lokalnej, pamięci sesji lub pliku cookie, zamiast klasycznego przechowywania identyfikatora sesji.
Kiedy użytkownik witryny chce uzyskać dostęp do zasobu z ograniczonym dostępem, podczas wykonywania takiego żądania dodawany jest dodatkowy nagłówek Authorization
:
Authorization: Bearer <token>
Serwer otrzymujący wartość w nagłówku nie przechowuje go w pamięci, by porównać ze sobą ciągi znaków – zamiast tego sprawdza, czy posiada prawidłową sygnaturę używaną przez serwer i na podstawie ich zgodności przyznaje dostęp używając zawartości ładunku tokenu.
Remove ads
Implementacje
JWT posiada znaczną liczbę gotowych implementacji standardu. Pojawiły się m.in. dla języków C[3], Clojure[4], Common Lisp[5], Dart[6], Elixir[7], Go[8], Haskell[9], Java[10], JavaScript[11], Lua[12], Perl[13], PHP[14], PowerShell[15], Python[16], Ruby[17], Rust[18], Scala[19] czy Swift[20], a także dla takich środowisk uruchomieniowych, jak .NET[21] czy Node.js[22].
Przypisy
Linki zewnętrzne
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads