Короткий ответ JWT состоит из трёх частей — header, payload и signature, закодированных в base64url и разделённых точками; изменение payload без пересчёта подписи корректным секретным ключом приведёт к несовпадению подписи, и сервер должен отклонить такой токен как невалидный. Как это работает подробнее Header описывает алгоритм подписи, payload содержит claims (например, user_id, роль, срок действия exp), signature — это HMAC или цифровая подпись от header+payload с использованием секретного (или приватного) ключа. Любой может декодировать base64 и прочитать payload — JWT не шифрует данные, а только подписывает. Пример кода Что использовать на практике Практика. На сервере обязательна проверка подписи и срока действия при каждом запросе; в payload нельзя класть секретные данные (пароли, полные номера карт), так как они читаемы без ключа; важно также не допускать алгоритм «none» в заголовке — это известная уязвимость некоторых библиотек. Подводные камни Риск. Путают подпись с шифрованием и кладут чувствительн