Czym jest JSON Web Token?
JSON Web Token (JWT) to kompaktowy, bezpieczny dla URL format tokenów zdefiniowany w RFC 7519, reprezentujący claims między dwiema stronami jako cyfrowo podpisany obiekt JSON, umożliwiający bezstanowe uwierzytelnianie i wymianę informacji.
Znane również jako: JSON Web Token, JWTs
JWT składa się z trzech zakodowanych w base64url części oddzielonych kropkami: nagłówka (określającego algorytm podpisywania), ładunku (zawierającego claims — pary klucz-wartość, takie jak ID użytkownika, role i czas wygaśnięcia) oraz podpisu (obliczonego z nagłówka i ładunku przy użyciu klucza prywatnego lub sekretu). Podpis pozwala każdej stronie posiadającej klucz weryfikacyjny potwierdzić, że token nie został zmodyfikowany.
JWT są szeroko stosowane jako tokeny nośne w uwierzytelnianiu API. Po zalogowaniu serwer wystawia JWT zawierający tożsamość i uprawnienia użytkownika. Klient dołącza JWT do kolejnych żądań (zazwyczaj w nagłówku Authorization), a serwer weryfikuje podpis bez potrzeby odpytywania bazy danych ani magazynu sesji. Ta bezstanowość czyni JWT atrakcyjnymi dla systemów rozproszonych i architektur mikroserwisów, gdzie udostępnianie stanu sesji między usługami jest niepraktyczne.
JWT niosą ze sobą ważne kwestie bezpieczeństwa. Ponieważ ładunek jest tylko zakodowany w base64 (nie zaszyfrowany), każdy, kto przechwyci JWT, może odczytać jego zawartość — nigdy nie umieszczaj sekretów w ładunkach JWT, chyba że używasz JWE (JSON Web Encryption). Tokeny muszą mieć krótkie czasy wygaśnięcia, ponieważ po wystawieniu nie można ich łatwo unieważnić. Ataki zamiany algorytmu, gdzie atakujący zmienia nagłówek na „none" lub zamienia weryfikację asymetryczną na symetryczną, były nawracającą podatnością w bibliotekach JWT.
Jak Vaulted używa JSON Web Token
Vaulted nie używa JWT do uwierzytelniania ani zarządzania sesjami, ponieważ nie ma kont użytkowników. JWT i inne tokeny nośne są jednak często udostępnianymi poświadczeniami wymagającymi bezpiecznego przesyłu — na przykład udostępnienie długotrwałego tokena API lub sekretu JWT service-to-service współpracownikowi podczas incydentu. Vaulted zapewnia zaszyfrowane, samozniszczające się dostarczanie takich tokenów, zapewniając, że nie pozostają w kanałach komunikacji.