tl; dr Чтобы сохранить полезную нагрузку (и токен в целом) в безопасности, все, что вам нужно сделать, это использовать строгий секрет и алгоритм подписи и проверить подпись перед доверием содержимого .
JWT подписан с секретным ключом, но полезная нагрузка может быть простым текстом / json / xml / query
Вы, похоже, не понимаете, что такое JWT есть. Нет отдельного JWT и полезной нагрузки, один является частью другого. JWT состоит из заголовка, полезной нагрузки и подписи. Подпись создается как для частей заголовка и полезной нагрузки, так и для дополнительного секретного ключа. Это означает, что, если любая часть подделана с подписью, не может быть проверено.
Из Введение в JWT :
Обратите внимание, что для подписанных токенов эта информация [заголовок и полезная нагрузка], хотя и защищена от подделки, доступна для чтения любому. Не помещайте секретную информацию в элементы полезной нагрузки или заголовка JWT, если она не зашифрована.
Чтобы убедиться в этом, вы можете использовать JWT отладчик . Когда вы изменяете декодированный заголовок или полезную нагрузку, их значения base64 изменяются, и, следовательно, подпись изменяется вместе с ними. Если вы скопируете и вставите старое значение подписи в новый JWT, это приведет к ошибке неверной подписи.