Инструменты разработчика · Декодер JWT
JWT Сравниваемые альтернативы: PASETO, печенье, миндальное печенье и непрозрачные жетоны.
· Фон
JWT аутентификация архитектура
Гибкость JWT является источником большинства проблем с безопасностью, и для ее устранения было разработано несколько форматов. В этом посте сравниваются PASETO, Biscuit, Macaroons и простые непрозрачные жетоны с JWT по безопасности и совместимости.
Пушки гибкости — как гибкость алгоритма JWT и дополнительные утверждения создали класс ошибок
JWT предоставляет гибкие заголовки и необязательные утверждения, которые могут стать помехой, когда приложения рассматривают ввод токена как политику проверки. Правильный ответ не означает автоматически другой формат. Сначала определите, какой выбор должен быть невозможен, какие стороны нуждаются в автономных решениях и где находится состояние отзыва или делегирования.
ToolAcre иллюстрирует одно узкое свойство JWT: полезные данные, состоящие из трех частей, можно читать без проверки. Он не может сравнивать альтернативы или сертифицировать их библиотеки. Таким образом, это сравнение формулирует архитектурные вопросы и опускает непроверенные заявления о производительности, внедрении и зрелости.
PASETO разработан с учетом выбора версии протокола; подробности поддержки относятся к ее реализации
PASETO обычно представляет собой семейство протоколов с поддержкой версий, которое сужает криптографический выбор, а не содержит заголовок `alg` в свободной форме. Такое направление проектирования может уменьшить количество ошибок при выборе алгоритма, но точные версии, назначение и поведение библиотеки должны быть подтверждены в реализации, которую вы собираетесь развернуть.
Декодер JWT не может прочитать или проверить PASETO. Выбор этого варианта меняет инструменты, совместимость и предположения об управлении ключами. Оцените, соответствует ли его ограниченный протокол вашей среде эмитента и потребителя, вместо того, чтобы рассматривать «отсутствие заголовка alg» как полное доказательство безопасности.
Biscuit нацелен на ослабляемую авторизацию; этот репозиторий не проверяет свой набор функций
Biscuit связан с ослабляемой авторизацией и логикой, переносимой токенами. Это может служить моделям делегирования, отличным от простого объекта утверждений JWT. Репозиторий не содержит анализатора, верификатора или теста Biscuit, поэтому в этой статье не утверждается подробный синтаксис, криптографическая поддержка или рабочие параметры по умолчанию.
Спросите, нужно ли последующим держателям добавлять ограничения без получения более широких полномочий, как оценивается политика и как распределяются ключи. Затем протестируйте выбранную реализацию. Таблица утверждений JWT ToolAcre не предлагает эквивалентной оценки и не должна использоваться для сравнения правильности функций.
Макароны используют делегирование, ориентированное на предостережения; гарантии реализации находятся за пределами этого репозитория
Макароны используют предостережения в качестве модели делегирования и обычно описываются цепной аутентификацией. Они касаются другой формы полномочий, чем простое размещение ролей или областей в JWT. Опять же, точные гарантии и правила обработки предостережений относятся к выбранной документации по реализации и протоколу.
Архитектурный вопрос заключается в том, являются ли делегированные ограничения первоклассными требованиями. Если это не так, принятие более специализированного токена может добавить сложности, но не принести пользы. Если да, то проверяйте модель и освобождайте зависимости явно, а не сводите их на экран декодирования.
Непрозрачные токены с самоанализом — вообще без формата, за счет туда и обратно
Непрозрачные токены по своей конструкции не раскрывают удобочитаемой для клиента структуры утверждений. Сервер ресурсов может обратиться к эмитенту или службе самоанализа, чтобы узнать текущее состояние и разрешения. Этот круговой обход добавляет зависимости доступности и задержки, одновременно восстанавливая центральную точку принятия решения, полезную для отзыва и изменения политики.
Непрозрачное значение небезопасно для входа или вставки на веб-сайты; это все еще может быть удостоверение на предъявителя. ToolAcre должен отклонить его как неверный ввод JWT, а не гадать о содержании. Используйте самоанализ, контролируемый эмитентом, из доверенной инфраструктуры, а не общедоступное декодирование.
В чем JWT по-прежнему выигрывает — совместимость с поставщиками удостоверений и экосистемой OpenID Connect.
JWT остается привлекательным, когда существующие поставщики удостоверений, клиенты и серверы ресурсов уже используют его экосистему и профили. Функциональная совместимость может перевесить преимущества более чистого набора ограничений с нуля. Это преимущество по-прежнему зависит от дисциплинированного алгоритма, ключа, эмитента, аудитории и типа токена.
Читаемые полезные данные также поддерживают отладку, хотя это удобство увеличивает риск раскрытия информации. ToolAcre помогает с проверкой, но намеренно отказывается от проверки. Организация, выбирающая JWT, должна выделять средства на конфигурацию верификатора и отрицательные тесты, а не доверять уверенность знакомым инструментам.
Чего это не касается — производительность и зрелость библиотек на каждом языке, которые меняются слишком быстро, чтобы их можно было точно определить.
В этом сравнении не учитываются рейтинги производительности и зрелости языковых библиотек, поскольку эти факты меняются и не подтверждаются данными репозитория. Это также позволяет избежать утверждений о том, что любая альтернатива автоматически решает проблему хранения ключей, кражи учетных данных, моделирования авторизации или оперативного мониторинга.
Оцените текущие библиотеки на целевом языке, методы обслуживания, профили, реагирование на инциденты и ограничения интеграции. Создайте прототип путей принятия и отклонения, которые имеют значение для вашей модели угроз. Имена форматов не заменяют исполняемые доказательства.
Вывод: выберите нужные ограничения — если вы попадете на JWT, декодер ToolAcre JWT станет инструментом проверки; альтернативам нужны свои собственные
Выберите нужные вам ограничения. Если гибкость алгоритма не нужна, отдайте предпочтение дизайну, который затрудняет нежелательный выбор. Если централизованный отзыв необходим, включите состояние. Если ослабление имеет решающее значение, оцените систему, ориентированную на делегирование. Если преобладает совместимость экосистем, строго ограничьте JWT.
ToolAcre — это только инструмент проверки для ветки JWT. Он не декодирует альтернативы и не доказывает надежность JWT. Какой бы дизайн ни победил, принятие учетных данных должно происходить в доверенном программном обеспечении с явной политикой и проверенным поведением при сбоях.