Я не могу понять причины, по которым заявления / полезные данные JWT становятся публично видимыми после их декодирования в base64.
Зачем?
Кажется, было бы гораздо полезнее зашифровать его с помощью секрета.
Может кто-нибудь объяснить, почему или в какой ситуации полезно хранить эти данные?
security
json
authentication
jwt
мне нужна помощь
источник
источник
Ответы:
Вы решаете не шифровать полезную нагрузку по тем же причинам, по которым вы решаете не шифровать что-либо еще: стоимость (какой бы маленькой она ни была) превышает выгоду, и многие данные просто не нуждаются в такой защите.
Что вам больше всего нужно защищать, так это то, что люди вмешиваются в данные, чтобы обновлять неправильную запись, или чей-то текущий счет получает деньги, которых у нее не должно быть. Подпись JSON Web Token обеспечивает это, поскольку изменение любой части комбинации заголовок / полезная нагрузка / подпись делает пакет недействительным.
Обратите внимание, что вы все еще можете защитить пакеты на транспортном уровне с помощью SSL.
источник
Использование термина подпись в RFC аналогично цифровой подписи в асимметричной криптографии. В асимметричной криптографии, если отправитель шифрует сообщение своим закрытым ключом, любой, у кого есть сообщение, может расшифровать его с помощью открытого ключа отправителя. Таким образом, цель термина « подпись» состоит не в том, чтобы сохранить секретность сообщения, а в том, чтобы проверить целостность / отправителя сообщения, то есть это не было изменено.
В случае JWT отправляющая система является как создателем, так и потребителем сообщения (см. Диаграмму ниже), и цель состоит в том, чтобы убедиться, что маркер, переданный пользователю, не был подделан (например, предоставлены повышенные привилегии).
И, как упомянул @Robert, JWT могут / должны быть зашифрованы с помощью TLS.
Вот хорошее объяснение JWT и подписей, из которых получено изображение ниже. 5 простых шагов для понимания веб-токенов JSON (JWT)
источник
Чтобы добавить к ответу Роберта Харвиса, есть существенный недостаток шифрования полезной нагрузки - это означает, что получатель службы должен поделиться секретом с сервером аутентификации (ключом шифрования), чтобы понять, авторизован ли носитель токена. или не. Напротив, любой может проверить JWT, используя только открытый ключ, опубликованный сервером аутентификации.
Это ключевая часть спецификации openid connect, поскольку она позволяет клиентским приложениям проверять токены идентификации, выданные сервером аутентификации, а также упрощает развертывание серверов ресурсов (поскольку их не нужно развертывать с доступом к секретному шифрованию). ключ), а также помогает при попытке диагностировать любые проблемы с выданным JWT.
источник