Что такое JSON веб-токен?

JSON веб-токен (JWT) — это открытый стандарт, который определяет удобный способ передачи информации в виде JSON-объекта. Веб-токены часто используется для аутентификации и авторизации. В данной статье мы рассмотрим некоторые базовые концепции JWT, включая утверждения, субъект, эмитент, метаданные, ключ шифрования и URN.

Требования (Claims)

Утверждения (Claims) представляют собой набор пар ключ-значение, которые закодированы в JWT. Утверждения содержат информацию о субъекте токена, такую как его имя, адрес электронной почты или любую другаю информацию, которая может быть необходима. В JWT существует три типа утверждений: предопределенные, публичные и частные. Педопределенные утверждения установлены стандартом и имеют конкретные значения. К ним относятся такие утверждения, как «iss» (эмитент) или претензия «sub» (субъект). Публичные утверждения — это пользовательские утверждения, которые используются для хранения дополнительной информации о субъектt. Частные утверждения используются для обмена информацией между сторонами, которые договорились о значении конкретного утверждения.

Предмет (Subject)

Утверждение Subject (или «sub») идентифицирует сущность, который является субъектом токена. Это может быть пользователь, приложение или любая другая сущность, которая находится в центре внимания токена. Утверждение Subject является предопределенным утверждением и используется для идентификации получателя токена.

Эмитент (Issuer)

Утверждение эмитента (или «iss») идентифицирует организацию, выпустившую данный веб-токен. Это утверждение используется для указания источника токена и для проверки того, что эмитенту можно доверять.

Метаданные (Metadata)

Метаданные — это информация, которая предоставляет дополнительный контекст (информацию) о токене. Метаданные могут включать информацию об аудитории, времени истечения срока действия и любую другую информацию, необходимую для защиты токена. Метаданные кодируются как дополнительные утверждения в рамках JWT.

Ключ шифрования (Encryption Key)

Веб-токены могут быть зашифрованы с использованием секретного ключа для защиты информации, содержащейся в токене. Достигается это с помощью алгоритма симметричного шифрования, такого как AES, а зашифрованный JWT известен как JWE (JSON веб-шифрование). Ключ шифрования используется для шифрования и дешифровки JWT, поэтому он должен храниться в секрете для обеспечения безопасности информации.

Универсальное название ресурса (URN)

Универсальное название ресурса (URN) — это строка, которая используется для идентификации ресурсов, таких как JWT-утверждения, способом, независимым от их местоположения. URN-ы используются в JWT для идентификации конкретных утверждений и обеспечения их надлежащей обработки.

Таким образом, JWT — это компактный и автономный способ передачи информации между сторонами обмена в виде JSON-объекта.

Источник