Я уверен, что вы использовали 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?
Давайте упростим этот простой запрос браузера к серверу за несколько простых шагов.
- Браузер отправляет на сервер запрос POST с учетными данными, такими как имя пользователя и пароль.
- Сервер улавливает запрос, проверяет его, аутентифицирует его, и если все хорошее, JWT сгенерировано с секретом, а затем передано обратно в браузер
- Когда браузер получает успешный JWT, он отправляет этот JWT в заголовке для следующих запросов.
- Теперь сервер проверит, является ли токен JWT, отправленный браузером, действительным или нет, проверив, совпадает ли подпись JWT с подписью, которую мы определили.
- Если он действителен, он обработает запрос.
Примечание: обратите внимание, что с подписанными токенами вся информация, содержащаяся в токене, предоставляется пользователям или другим сторонам, даже если они не могут ее изменить. Это означает, что вы не должны помещать в токен секретную информацию.