![translation](https://cdn.durumis.com/common/trans.png)
To jest post przetłumaczony przez AI.
Czym jest JWT (JSON Web Token)?
- Język pisania: Koreański
- •
-
Kraj referencyjny: Wszystkie kraje
- •
- TO
Wybierz język
Tekst podsumowany przez sztuczną inteligencję durumis
- JSON Web Token (JWT) to zakodowany token używany do bezpiecznego przesyłania informacji.
- JWT składa się z nagłówka, ładunku i podpisu. Podpis gwarantuje integralność danych.
- JWT nie wymaga przechowywania informacji o stanie, co zwiększa skalowalność w rozproszonych środowiskach.
Czym jest JWT?
JSON Web Token (JWT) to standardowy, otwarty sposób (RFC 7519) bezpiecznego przesyłania informacji w postaci obiektu JSON. Po prostu, obejmuje niezbędne informacje w tokenie i szyfruje je do użycia.
JWT jest określany jako token podpisany. W przypadku użycia pary kluczy publicznych i prywatnych podpis jest gwarancją, że token został podpisany tylko przez podmiot posiadający klucz prywatny. Oznacza to, że serwer posiadający klucz może zweryfikować, czy token jest prawidłowy.
Struktura JWT
JWT składa się z nagłówka (Header), ładunku (Payload) i podpisu (Signature).
Każda część jest kodowana w Base64 i oddzielana kropką (.).
Nagłówek
{
"alg": "HS256",
"typ": "JWT"
Nagłówek zawiera dwie główne informacje. Typ tokenu (typ) i użyty algorytm podpisu (alg). Algorytm podpisu jest używany do tworzenia i weryfikacji podpisu.
typ jest ustawiony na "JWT", a alg jest pisany jako HMAC, SHA256 itd. Zgodnie z powyższym przykładem oznacza to, że używany jest algorytm HS256 z kluczem prywatnym.
Ładunek
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
Ładunek zawiera roszczenia, które chcesz przekazać w tokenie. Dane identyfikacyjne użytkownika lub właściwości tokenu są przechowywane w postaci klucz-wartość. Oznacza to, że możesz umieścić w nim dowolne informacje!
Zgodnie ze specyfikacją standardową nazwa klucza jest zdefiniowana w skrócie, jako 3 litery.
Zarejestrowane roszczenia są następujące:
- iss (Issuer): Podmiot wystawiający token (zawiera unikatowe dane identyfikacyjne podmiotu wystawiającego token)
- sub (Subject): Podmiot, do którego skierowany jest token
- aud (Audience): Odbiorca tokenu
- exp (Expiration Time): Czas wygaśnięcia tokenu (po tym czasie token przestaje być ważny)
- nbf (Not Before): Data aktywacji tokenu (token nie może być używany przed tą datą)
- iat (Issued At): Czas wydania tokenu
- jti (JWT Id): Identyfikator tokenu JWT (wartość do odróżnienia, gdy emitentów jest wielu)
Możesz dodać i użyć innych wartości, jeśli są potrzebne.
Jednak ładunek nie jest zaszyfrowany ani podpisany, więc nie zawiera wrażliwych informacji.
Każdy może go odczytać po rozkodowaniu.jwt.io Możesz to sprawdzić bezpośrednio na stronie.
Podpis
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
Nagłówek i Ładunek są łączone kodem Base64, oddzielone kropką (.) i podpisywane za pomocą klucza prywatnego your-256-bit-secret serwera.
Oznacza to, że tylko serwer, który wystawił token, może odszyfrować go za pomocą klucza prywatnego.
Aby rozszyfrować, należy odszyfrować Podpis za pomocą klucza prywatnego, a następnie sprawdzić, czy base64UrlEncode(header) pasuje do wartości nagłówka JWT i czy base64UrlEncode(payload) pasuje.
Nagłówek i Ładunek, z wyjątkiem Podpisu, są tylko zakodowane, więc treść informacji jest widoczna, ale Podpis zapewnia integralność i bezpieczeństwo informacji.
JWT zawiera wszystkie niezbędne informacje, jest samowystarczalny. Jest to rozwiązanie stworzone w celu wyeliminowania wad sesji wymagających stanu, a JWT nie wymaga oddzielnego magazynu.
Brak potrzeby utrzymywania sesji po stronie serwera, co czyni go bezstanowym, co zwiększa skalowalność w rozproszonych systemach lub architekturze mikrousług.
Zabezpieczenie za pomocą Podpisu, podpisu cyfrowego, zapewnia integralność danych.