JSON Web Token (JWT) – что это такое и как работает?

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 способа хранения данных:

  1. Зарегистрирован: мы Можем определить как общие сведения о структуре маркера, свойства зарегистрированный тип может иметь только 3 персонажей. Наиболее распространенными являются:
    1. iss”: Имя/URI led маркер.
    2. “exp”: Время действия маркера.
  2. Аудитории: Например, название уже определяет, любой информации, которая может рассматриваться как публичная и не разумно, что имеет смысл отправлять этот токен, например, имя или какой-то идентификатор пользователя.
  3. Частные: Любой частной информации, что было согласовано между двумя сторонами, которые будут использовать этот маркер.

Вспомнив, что свойства не могут быть противоречивыми, то есть, мы не можем иметь свойство с тем же именем, даже если ваш вид будет отличаться. Эти сведения закодированы в 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, например :

  1. Пользователь отправляет информацию, необходимую для проверки подлинности.
  2. Сервер проверяет информацию, генерирует и возвращает JWT для пользователя.
  3. С помощью JWT в руках, теперь пользователь может выполнять запросы на проверку подлинности, отправив заголовок authorization: Authorization: Bearer <token>.
  4. Пользователь запрашивает личную информацию в вашем профиле.
  5. Сервер проверяет JWT и решает, может ли пользователь или нет доступа к этой информации.

В этом случае у нас есть механизм проверки подлинности “без гражданства”. Наши ресурсы будут защищены только, что проверить, является ли JWT действителен был указан в заголовке авторизации. Если наш маркер имеет все необходимые данные для этого запроса, это может помочь значительно сократить запросы к базе данных. Вспомнив, что JWTs являются учетные данные для доступа и должны быть обработаны с осторожностью, способ защиты системы, настройка срока действия маркера на низкую дата возможным.

Сохранить себе или поделиться:

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *