JSON Web Tokens to otwarty standard, który umożliwia transfer danych lub wymianę informacji między dwiema frakcjami. Działa na zabezpieczonym URL-u. Dane przekazywane są zakodowane jako obiekty JSON Web Signature lub jako struktury JSON Web Encryption. Przekazywanym informacjom można ufać, ponieważ są podpisane cyfrowo. Podpisuje się je w sposób niejawny za pomocą algorytmu HMAC lub jawnie za pomocą klucza publicznego/prywatnego RSA lub ECDSA.

 

JSON Web Tokens pozwala nadać podpisane przekazy. Umożliwiają one weryfikację zawartości. Natomiast zakodowane przesyłki ukrywają tę zawartość. Korzystanie z prywatnego lub publicznego klucza dodatkowo certyfikuje nadawcę transferu danych lub informacji. 

Kiedy można używać JSON Web Token?

JSON Web Token używany jest głównie w dwóch sytuacjach. Najpopularniejszą będzie autoryzacja dostępu. Po tym, jak użytkownik zaloguje się, każde kolejne żądanie będzie obowiązywało jedynie z użyciem JWT. Wszystkie prośby o dostęp, usługi i dane dostępne będą tylko za okazaniem przepustki nadanej wcześniej. Pojedyncze logowanie (single sign on) korzysta z JWT ze względu na proste rozciągnięcie jego działania na wiele platform.

 

Wymiana tajnych informacji to również doskonała okazja na wypróbowanie JWT. Przesyła on dane między dwiema stronami przy pomocy klucza publicznego lub prywatnego. Dzięki niemu istnieje pewność, że nadawca jest tym, za kogo się podaje, a treść nie była modyfikowana.

 

Budowa JSON Web Token

JSON Web Token, w kompaktowej formie, składa się z trzech elementów oddzielonych od siebie kropkami. 

 

Pierwszy z nich to nagłówek (header). Najczęściej złożony jest z dwóch elementów – przepustka oraz algorytm, jaki jest użyty, jak np. HMAC SHA256 lub RSA.

 

Przykład:

{

  "alg": "HS256",

  "typ": "JWT"

}

 

Później obiekt JSON kodowany jest w zapis w BASE24, aby stworzyć pierwszą część JWT.

 

Kolejnym elementem składowym tokenu JWT jest zawartość (payload). To w niej zawarte są dane przeznaczone do przesłania oraz metadane. W zawartości znajdują się trzy typy informacji: rejestrowane, publiczne i prywatne. Rejestrowane nie są obligatoryjne, ale z pewnością zalecane. Ich celem jest określenie użytkownika, daty ważności, nadawcy i odbiorcy. Publiczne można modyfikować bez ograniczeń, ale aby uniknąć zbieżności, powinny być określone w rejestrze IANA JSON Web Token lub zdefiniowane Ujednoliconym Identyfikatorem Zasobów. Prywatne to dane pozostałe, niepasujące do reszty.

 

Ostatnim elementem składającym się na przekaz JWT jest sygnatura (signature). Aby ją utworzyć, potrzebny jest stworzony wcześniej nagłówek i zakodowana zawartość, hasło oraz algorytm określony w nagłówku. To sygnatura stwierdza autentyczność danych zawartych w tokenie. Dzięki niej mamy pewność nadawcy i treści oraz tego, że treść nie została zmodyfikowana po drodze.

 

Działanie i zastosowanie tokenu JSON

JWT jest zbudowany z potrójnego ciągu Base64 oddzielonego kropkami. Hasło powinno być długie, a sam token nie powinien być przechowywany dłużej, niż to potrzebne. Nie powinno się również przechowywać ważnych danych w pamięci podręcznej przeglądarki ze względu na niskie bezpieczeństwo. Ilekroć użytkownik prosi o dostęp do poufnych danych, JWT zostanie przesłany z nagłówkiem dotyczącym autoryzacji, a serwer sprawdzi jego poprawność. 

 

JWT może służyć do stworzenia serwisu autoryzacyjnego, aby uwierzytelniać użytkowników aplikacji. W tym celu należy stworzyć back-end aplikacji, udostępnić REST API aplikacjom klienckim, które potem będą się komunikować z back-endem. Następnie należy dołączyć serwis autoryzacyjny. Back-end zweryfikuje użytkownika za pomocą JWT i udzieli dostępu do zasobu.

 

 

JSON Web Token wypada lepiej od Simple Web Tokens (SWT) i Security Assertion Markup Language Tokens (SAML), bo jest od nich bardziej kompaktowy. Zamiast symetrycznie stworzonych haseł, JWT używa klucza publicznego/prywatnego. Oprócz tego JSON JWT są popularniejsze wśród programistów, bo pasują do większości języków programowania. Standard ten wykorzystywany jest w całym internecie. Pozwala na łatwe zarządzanie uprawnieniami i autoryzacją w bezpiecznych warunkach i na wielu platformach.