JSON Web Token (JWT) — это открытый съезд (RFC 7519), который позволяет таким образом компактным и автономным безопасной передачи информации между сторонами в виде объекта JSON.
Эти сведения могут быть проверены и доверены, потому что они с цифровой подписью, шифрования с использованием секретного ключа (HMAC) или общественных/частных ключей с использованием RSA или ECDSA.
В этом посте мы подробнее остановимся на маркеры, подписанные, способ, используемый для JWTs.
Для чего?
В JWT полезно в различных ситуациях, но две наиболее распространенные:
Проверка подлинности: маркер используется для проверки личности пользователя и его разрешения. Эти маркеры, как правило, включают в себя идентификаторы и информацию, не чувствительных пользователей.
Обмена информацией: По безопасным средством для двух приложений развлечения, благодаря так, что токены являются подписанные цифровой подписью, они обеспечивают личности сторон, и если информация не была изменена в середине пути.
Как он состоит?
Один JWT состоит из 3 частей:

Заголовок обычно состоит из двух частей: тип токена JWT в большинстве случаев, и тип алгоритма подписи используется (HMAC SHA256 или RSA). Эти сведения закодированы в base64 формировать первую часть нашего токена:
{ "alg" : "HS256" , "typ" : "JWT" "exp" : "1516239022" } // base64: // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImV4cCI6IjE1MTYyMzkwMjIifQ |
Содержание
В этой части вы найдете сведения о сущности, что тот, маркер представляет собой информацию управления и выдачи маркер, и, например, данных от одного пользователя. Существует 3 способа хранения данных:
- Зарегистрирован: мы Можем определить как общие сведения о структуре маркера, свойства зарегистрированный тип может иметь только 3 персонажей. Наиболее распространенными являются:
- “iss”: Имя/URI led маркер.
- “exp”: Время действия маркера.
- Аудитории: Например, название уже определяет, любой информации, которая может рассматриваться как публичная и не разумно, что имеет смысл отправлять этот токен, например, имя или какой-то идентификатор пользователя.
- Частные: Любой частной информации, что было согласовано между двумя сторонами, которые будут использовать этот маркер.
Вспомнив, что свойства не могут быть противоречивыми, то есть, мы не можем иметь свойство с тем же именем, даже если ваш вид будет отличаться. Эти сведения закодированы в base64, образуя второй части нашего токена:
{ "id" : "1" , "name" : "Henrique" , "admin" : true } // base64: // eyJpZCI6IjEiLCJuYW1lIjoiSGVucmlxdWUiLCJhZG1pbiI6dHJ1ZX0 |
Подпись
Наконец, у нас есть наша подпись-маркер, в основном в этой части не имеем соединение всех других частях создан: Заголовок кодируется + Содержимое в кодировке. Весь этот контент в зашифрованном виде с помощью метода, выбранного в результате тогда на нашу подписку.
Давайте возьмем один из распространенных форматов, например, метод HMAC-SHA256, который шифрует все это с помощью ключа/секретное слово:
HMACSHA256( base64UrlEncode(cabecalho) + "." + base64UrlEncode(conteudo), chave) |
С такой подписи, которые мы можем проверить, потом маркер, который в силе, и если никакая информация не была изменена.
Результат-3 тексты, закодированные в base64, разделенных точками. Маркер генерируется, будет иметь более или менее следующий формат:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXvcisimv4cci6ije1mtyymzkwmjiifq.
eyJpZCI6IjEiLCJuYW1lIjoiSGVucmlxdwuilcjhzg1pbii6dhj1zx0.
3PKPbLcWbXlxKh_63hupialSPhA1YzMGaaa1kd19kjo
Debug
Вы можете увидеть токен, созданный в этой статье на сайте JWT.io, на нем вы можете также создавать свои токены и понять легкий способ и visual поток поколения JWTs.

Случай использования:
Хорошо, теперь, когда вы понимаете, что это такое, для чего нужен и как работает JWT, мы покажем его использования в реальной ситуации.
Как уже упоминалось в начале текста, наиболее распространенным из JWT в подлинности пользователей, мы будем использовать REST API, например :

- Пользователь отправляет информацию, необходимую для проверки подлинности.
- Сервер проверяет информацию, генерирует и возвращает JWT для пользователя.
- С помощью JWT в руках, теперь пользователь может выполнять запросы на проверку подлинности, отправив заголовок authorization: Authorization: Bearer <token>.
- Пользователь запрашивает личную информацию в вашем профиле.
- Сервер проверяет JWT и решает, может ли пользователь или нет доступа к этой информации.
В этом случае у нас есть механизм проверки подлинности “без гражданства”. Наши ресурсы будут защищены только, что проверить, является ли JWT действителен был указан в заголовке авторизации. Если наш маркер имеет все необходимые данные для этого запроса, это может помочь значительно сократить запросы к базе данных. Вспомнив, что JWTs являются учетные данные для доступа и должны быть обработаны с осторожностью, способ защиты системы, настройка срока действия маркера на низкую дата возможным.