Русский

Инструменты разработчика · Декодер JWT

RFC 8725 Объяснение: JWT Лучшие современные практики для верификаторов

· Фон

JWT безопасность аутентификация

Контрольный список проверяющего устройства JWT, отделенный от панели проверки только для декодирования.
Оригинальная векторная иллюстрация ToolAcre

В документе IETF известные ошибки JWT собраны в один документ, посвященный передовым практикам. В этом посте рассматриваются рекомендации и соотносится каждая с классом инцидентов, которые она предотвращает.

Повторяющиеся сбои JWT мотивируют использовать контрольный список проверяющего; источники репозитория не устанавливают историю публикаций

Гибкие форматы токенов допускают комбинации, которые верификатор должен ограничивать. К повторяющимся ошибкам относятся доверие к меткам алгоритмов, принятие токена не под тем эмитентом или аудиторией и следование выбранному злоумышленником ключевому материалу. Контрольный список преобразует эти широкие риски в браковочные испытания на фактической границе приемки.

В схеме история публикаций отнесена к определенному году, но источники репозитория не подтверждают эту историю, поэтому в этом разделе она опущена. Действенное различие устанавливается локально: ToolAcre только декодирует, в то время как каждое оптимальное решение принадлежит настроенному верификатору.

Закрепите алгоритмы и не отклоняйте ни одного — рекомендации, касающиеся алгоритма alg:none и путаницы ключей

Закрепляйте разрешенные алгоритмы независимо от заголовка и отклоняйте беззнаковые входные данные в потоках, требующих подписи. Привяжите каждое принятое семейство алгоритмов к правильному типу ключа. Не позволяйте токену переключать верификатор с асимметричной проверки на HMAC или отключать проверку с помощью `none`.

ToolAcre отмечает `none` и объясняет распознанные метки, но эти предупреждения ни к чему не приводят. Докажите реальную политику с помощью отрицательных тестов на бэкэнде: неожиданные алгоритмы, пустые подписи и неправильные типы ключей должны потерпеть неудачу, даже если их первые два сегмента остаются декодируемыми.

Проверка аудитории и эмитента — рекомендации против межсервисного воспроизведения

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

Декодер показывает значения `iss` и `aud`, не зная ожидаемой конфигурации. Используйте эту видимость для выявления тестовых примеров, а не для вынесения вердикта. Приемочные тесты должны отличать не того эмитента, не ту аудиторию и ошибку подписи, чтобы операционные журналы оставались полезными.

Используйте явную типизацию — заголовок type как защиту от подмены токенов.

Явный ввод токена может разделить профили, которые в противном случае повторно используют одинаковые формы утверждений. Верификатор должен знать, какой тип он ожидает для конкретной конечной точки, и отклонять несовместимые профили, а не рассматривать каждый подписанный JWT как взаимозаменяемый.

Заголовок `typ` по-прежнему не является доверенным до проверки, а ToolAcre выдает предупреждение только в том случае, если его строка отличается от `JWT`. Он не проверяет профили токенов доступа, вложенный контент или соглашения поставщиков. Определите правила типов в приложении и протестируйте попытки подстановки.

Не доверяйте jku, x5u или встроенным ключам — рекомендации источника ключей

Не позволяйте `jku`, `x5u`, встроенным массивам данных JWK или сертификатов устанавливать источник ключей только потому, что они появляются в защищенном заголовке. Разрешайте ключи с помощью независимых доверенных отношений с эмитентом и политики ограниченного извлечения. Рассматривайте `kid` только как селектор внутри этой границы.

ToolAcre не выполняет поиск в сети по значениям заголовка. Это правильное поведение для универсального инспектора. Во время аудита отслеживайте каждый путь от метаданных заголовка до файловой системы, кэша, базы данных и сетевых операций, а затем отклоняйте любой путь, который создает доверие из входных данных, управляемых токенами.

Криптографический ввод и рекомендации по зашифрованному содержимому должны быть проверены в выбранной библиотеке и профиле.

Криптографические реализации должны проверять входные данные и следовать правилам выбранного профиля. Проекты шифрования также требуют тщательного подхода к сжатию и наблюдаемым данным. Точные API и значения по умолчанию зависят от библиотеки и не представлены в этом репозитории, поэтому эта статья не изобретает переключатели и не претендует на универсальную поддержку.

Прочтите текущую документацию по развернутой библиотеке и версии, а затем создайте тесты на некорректный ввод и несоответствие политик. Чистые ошибки INVALID_JWT декодера демонстрируют хорошую эргономику проверки, но они не являются свидетельством того, что отдельный верификатор правильно обрабатывает криптографические крайние случаи.

Рабочий пример — аудит процедуры проверки по контрольному списку

Аудит процедуры проверки путем перечисления конфигурации доверенного эмитента, принятых алгоритмов, источника ключей, аудитории, типа токена, политики времени и заявлений приложений. Для каждого элемента добавьте отрицательный токен, который синтаксически читаем, но нарушает ровно одно ожидание. Подтвердите отказ на реальной границе.

Используйте ToolAcre только для проверки того, что утверждает каждое устройство, и убедитесь, что предполагаемая мутация присутствует. Не используйте его вывод в качестве утверждения о том, что прибор недействителен. Ответ верификатора и журналы предоставляют это доказательство, в то время как декодер остается неизменным для принятых и отклоненных примеров.

Вывод: чек-лист, а не библиотека — декодер ToolAcre JWT помогает проверять токены во время аудита; практика применима к верификатору, который вы пишете

Документ с передовой практикой — это контрольный список, а не библиотека проверок. Его ценность проявляется, когда команды переводят рекомендации в явную конфигурацию, сужают доверительные отношения и тесты, которые завершаются неудачно. Декодер может сделать ввод токенов разборчивым во время этой работы, но не может реализовать элементы управления.

Соблюдайте границы в документации и пользовательском интерфейсе: декодированное означает читаемое, неаутентичное, неизмененное, авторизованное или приемлемое. Закрепите политику за пределами токена: сначала проверьте, а затем примените утверждения. ToolAcre намеренно останавливается перед принятием всех этих решений.