Почему JWT Token содержит алгоритм, используемый для шифрования - PullRequest
0 голосов
/ 23 октября 2018

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

1 Ответ

0 голосов
/ 29 октября 2018

Во-первых, требование "alg" является обязательным по спецификации не только для зашифрованных JWT (JWE), но также для (просто) подписанных JWT (JWS) и даже необеспеченный JWS .

Основная причина того, почему ссылки на используемые криптографические алгоритмы - это хорошая идея, заключается в том, что RFC 7518 определяет как «Криптографическая ловкость» :

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

Быстрая криптографическая гибкость в основном означает, что ваш Auth-сервер может использовать несколько алгоритмов одновременно.Это, например, позволяет осуществлять постепенное развертывание токенов, подписанных и / или зашифрованных с помощью новых / различных алгоритмов, без нарушения поддержки уже выпущенных токенов.

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

...