# Верификатор JWT

Проверьте, подлинный ли веб-токен JSON и не истёк ли срок его действия. Вставьте токен вместе с секретом HMAC, открытым ключом PEM, сертификатом, JWK или целым JWKS. Верификатор проверит подпись с помощью библиотеки jose, сравнит exp и nbf с текущим временем с учётом необязательного допуска часов и покажет понятный результат рядом с декодированными заголовком и утверждениями. Токены с alg none отклоняются.

## Часто задаваемые вопросы

### Что проверяет верификатор?

Он проверяет подпись с помощью указанного вами ключа, а затем сравнивает утверждения exp и nbf с текущим временем. Токен признаётся действительным, только если подпись совпадает и обе проверки времени пройдены. Утверждения, такие как iss, aud или sub, отображаются в полезной нагрузке, но не сравниваются с ожидаемыми значениями.

### Какие ключи можно вставить?

Для HS256, HS384 и HS512 вставьте общий секрет в виде текста или oct JWK. Для токенов RSA, EC и EdDSA вставьте открытый ключ PEM (SPKI или PKCS #1), сертификат X.509, открытый или закрытый JWK, JWKS с числом ключей до 50 либо закрытый ключ PEM, из которого используется только открытая часть.

### Как из JWKS выбирается нужный ключ?

Если в заголовке токена есть kid, используется ключ с таким же kid из набора; если совпадений нет, в сообщении об ошибке указывается kid. Если kid нет, в наборе должен быть ровно один ключ. Так же выбирают ключи большинство серверов из документа jwks_uri.

### Для чего нужен параметр алгоритма?

При выборе «Использовать alg токена» алгоритм берется из заголовка токена, но ключ все равно должен ему соответствовать: открытый ключ RSA нельзя использовать как секрет HMAC. Выберите конкретный алгоритм, чтобы также требовать его использования в токене — именно так сервер должен фиксировать ожидаемый алгоритм. Токен с другим alg будет отклонен, причем будут указаны оба названия.

### Почему токен с alg none отклоняется?

Токен с alg none не содержит подписи, поэтому проверять нечего и создать его мог кто угодно. Поддержка таких токенов — известная уязвимость в библиотеках JWT. Проверяющий сообщает об ошибке, а не о действительном результате.

### Как работают exp, nbf и допуск расхождения часов?

Токен считается просроченным, если exp меньше или равен текущему времени, и еще не действительным, если nbf позже текущего времени. Допуск расхождения часов от 0 до 3600 секунд расширяет обе проверки, чтобы учесть рассинхронизацию часов серверов. Если присутствующие утверждения не имеют числовых значений, токен считается недействительным.

### Что означает недействительная подпись?

Токен подписан не предоставленным вами ключом либо его заголовок или полезная нагрузка были изменены после подписания. Убедитесь, что вставили соответствующий открытый ключ или секрет без изменений и скопировали токен целиком. Декодированные заголовок и полезная нагрузка все равно отображаются, чтобы вы могли их сравнить.

### Какие алгоритмы поддерживаются?

HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 и EdDSA с ключами Ed25519. Длина ключей RSA должна составлять не менее 2048 бит. Зашифрованные токены (JWE) не расшифровываются.

### Сохраняются ли токен или ключ?

Нет. Токен и ключ используются только для этой проверки в памяти и никогда не записываются в журналы и не сохраняются. Открытым ключом можно безопасно делиться, но с секретами HMAC следует обращаться осторожно; замените любой секрет, который, по вашему мнению, мог быть раскрыт.

### Каковы максимальные размеры токена и ключа?

Длина токена может составлять до 65,536 символов, а поля ключа — до 262,144 символов, чего достаточно для больших документов JWKS. Токен должен состоять из трех частей в формате base64url, разделенных точками, иметь заголовок JSON с элементом alg и объект JSON в качестве полезной нагрузки.

Ваша реклама здесь?

[Напишите нам по электронной почте](mailto:hi@dennn.is?subject=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D0%BD%D0%B0%20OneClick%20Pro)

[Реклама Набор плагинов для работы агентов с WordPress.](https://sleekwp.com/?ref=oneclickpro)
