Ответ
JWT (JSON Web Token) состоит из трёх частей, разделённых точками:
1. Header (Заголовок)
- Содержит метаданные: тип токена (
typ:"JWT") и алгоритм подписи (alg:"HS256","RS256"). - Кодируется в Base64URL.
- Пример:
{"alg": "HS256", "typ": "JWT"}.
2. Payload (Полезная нагрузка)
- Содержит утверждения (claims) о пользователе и данные: идентификатор (
sub), срок действия (exp), издатель (iss). - Кодируется в Base64URL.
- Пример:
{"sub": "123", "name": "John", "exp": 1516239022}.
3. Signature (Подпись)
- Гарантирует целостность токена. Создается путем подписи (хеширования) сконкатенированных и закодированных
headerиpayloadс использованием секретного ключа или приватного ключа. - Пример для HMAC-SHA256:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
Итоговый формат: header.payload.signature
Пример токена:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSm9obiJ9.ABC123...