Во-первых, требование "alg" является обязательным по спецификации не только для зашифрованных JWT (JWE), но также для (просто) подписанных JWT (JWS) и даже необеспеченный JWS .
Основная причина того, почему ссылки на используемые криптографические алгоритмы - это хорошая идея, заключается в том, что RFC 7518 определяет как «Криптографическая ловкость» :
Разработчики должны знать, чтокриптографические алгоритмы со временем ослабевают.По мере разработки новых методов криптоанализа и повышения производительности вычислений коэффициент работы для нарушения конкретного криптографического алгоритма будет уменьшаться.Следовательно, разработчики и развертывания должны быть готовы к набору алгоритмов, которые поддерживаются и используются для изменения во времени.Таким образом, реализации криптографических алгоритмов должны быть модульными, что позволяет легко вставлять новые алгоритмы.
Быстрая криптографическая гибкость в основном означает, что ваш Auth-сервер может использовать несколько алгоритмов одновременно.Это, например, позволяет осуществлять постепенное развертывание токенов, подписанных и / или зашифрованных с помощью новых / различных алгоритмов, без нарушения поддержки уже выпущенных токенов.
Поскольку JWT используются в том, что я называю Аутентификация без состояния , аутентификацияСервер в идеале не хранит токены.Следовательно, используемый алгоритм должен храниться как часть метаданных токенов в его заголовке.