Я уверен, что вы использовали JWT много раз, но задумывались ли вы когда-нибудь о том, что это такое? даже если вы не использовали его, возможно, вы слышали о JWT, и в этом блоге мы увидим, что такое JWT? что он может делать? как это можно создать? какова структура JWT? и все эти вещи, которые означают объяснение JWT.

Первым делом что такое веб-токен JSON (JWT)?

Это открытый стандарт (RFC 7519)

Открытый стандарт означает, что это стандарт Интернета, и каждый может его использовать.

Почему это используется?

Безопасная передача информации между любыми двумя телами, то есть любыми двумя пользователями или любыми двумя серверами.

Он имеет цифровую подпись.

Информация проверена и доверена означает, что данные не меняются в период между передачей.

Компактный

Он настолько компактен, что вы можете просто отправить его по URL-адресу в виде запросов GET или POST или в заголовке HTTP. Это делает его в высшей степени быстрым, а такая быстрая передача делает JWT более удобным!

Автономный!

Токен JWT - это автономная информация о пользователе, которая позволяет избежать более одного запроса к базе данных.

Предположим, пользователь пытается войти в систему, вы проверяете такую ​​информацию, как имя пользователя и пароль, затем вы просто предоставляете токен, поэтому каждый раз, когда пользователь собирается запросить что-то с вашего веб-сайта, вам не нужно входить в систему, вам просто нужно пройти этот токен, а затем система JWT просто проверит этот токен, и, если токен действителен, он обработает / ответит на запрос.

Но чем полезен JWT?

JWT полезен в случае аутентификации и обмена информацией между любыми двумя телами, как мы обсуждали ранее.

Как будет выглядеть структура веб-токена JSON?

Веб-токен JSON состоит из трех частей: части A, части B и части C. Часть - это часть заголовка, тогда мы объединили часть B, которая называется полезной нагрузкой, а часть C - это подпись.

ЗАГОЛОВОК:

{
 "alg" : "HS256",
 "typ" : "JWT"
}

Заголовок обычно состоит из двух частей: типа токена, который является JWT, и используемого алгоритма подписи, например HMAC С SHA-256 (HS256) и подпись RSA с SHA-256 (RS256). Этот алгоритм сообщит JWT, в каком алгоритме он закодирован.

Затем этот заголовок JSON закодирован в Base64Url, чтобы сформировать первую часть JWT. (aaaaaaa.)

Полезная нагрузка:

{   
  "sub": "2332233",
  "name": "Umesh",   
  "is_staff": true 
}

Полезная нагрузка содержит утверждения. Заявления - это сведения о пользователе или дополнительные метаданные, такие как дата истечения срока действия токена, администратор / персонал пользователя и другие вещи, а затем сама полезная нагрузка.

Затем этот заголовок JSON закодирован в Base64Url, чтобы сформировать вторую часть JWT. (. bbbbbbbb.)

ПОДПИСЬ:

HMACSHA256(
  base64UrlEncode(header) + "." +   base64UrlEncode(payload), secret
)

Подпись - это самая важная часть токена, которая проверяет, что данные заголовка и полезной нагрузки не изменяются при передаче из одного тела в другое.

Подпись использует версию заголовка base64, затем объединяется с версией полезной нагрузки base64 и затем кодируется с помощью HMACSHA256 с секретом, и это важно, потому что, если кто-то даже изменил полезную нагрузку, он этого не сделает. Не знаю секрета, и тогда эта подпись не будет точно такой же, как и исходная полезная нагрузка.

Последний токен JWT:

final_token = base64urlEncoding(header) + '.' +
              base64urlEncoding(payload) + '.' + 
              base64urlEncoding(signature)

Итак, после объединения всех этих трех частей мы получаем объединенный JWT. Первая версия заголовка base64, затем вторая версия полезной нагрузки base64, а затем третья base64 подписи.

Как работает веб-токен JSON?

Давайте упростим этот простой запрос браузера к серверу за несколько простых шагов.

  1. Браузер отправляет на сервер запрос POST с учетными данными, такими как имя пользователя и пароль.
  2. Сервер улавливает запрос, проверяет его, аутентифицирует его, и если все хорошее, JWT сгенерировано с секретом, а затем передано обратно в браузер
  3. Когда браузер получает успешный JWT, он отправляет этот JWT в заголовке для следующих запросов.
  4. Теперь сервер проверит, является ли токен JWT, отправленный браузером, действительным или нет, проверив, совпадает ли подпись JWT с подписью, которую мы определили.
  5. Если он действителен, он обработает запрос.

Примечание: обратите внимание, что с подписанными токенами вся информация, содержащаяся в токене, предоставляется пользователям или другим сторонам, даже если они не могут ее изменить. Это означает, что вы не должны помещать в токен секретную информацию.