Loading AI tools
Z Wikipedii, wolnej encyklopedii
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].
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 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"
}
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 (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.
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.
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].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.