Я являюсь автором библиотеки узлов, которая обрабатывает аутентификацию довольно подробно, express-stormpath , поэтому я поделюсь здесь с некоторой информацией.
Во-первых, JWT обычно НЕ зашифрованы. Хотя существует способ шифрования JWT (см .: JWE ), на практике это не очень распространено по многим причинам.
Далее, любая форма аутентификации (с использованием JWT или нет) подвергается атакам MitM (человек посередине). Эти атаки происходят, когда злоумышленник может просматривать ваш трафик в сети, когда вы делаете запросы через Интернет. Это то, что видит ваш провайдер, АНБ и т. Д.
Это то, что SSL помогает предотвратить: зашифровав трафик NETWORK с вашего компьютера -> некоторый сервер при аутентификации, третье лицо, которое отслеживает ваш сетевой трафик, НЕ сможет увидеть ваши токены, пароли или что-то в этом роде, если они каким-то образом не смогут получить копию закрытого SSL-ключа сервера (маловероятно). По этой причине SSL ОБЯЗАТЕЛЬНО для всех форм аутентификации.
Допустим, однако, что кто - то сможет использовать свой SSL и могут просматривать ваш маркер: ответ на ваш вопрос в том , что ДА , злоумышленник будет иметь возможность использовать этот маркер , чтобы выдавать себя за вас и прошу сделать на свой сервер.
Теперь здесь протоколы.
JWT - это всего лишь один стандарт для токена аутентификации. Их можно использовать практически для чего угодно. Причина, по которой JWT довольно крутая, заключается в том, что вы можете встраивать в них дополнительную информацию и подтверждать, что никто не перепутал ее (подписание).
ОДНАКО, сами JWT не имеют ничего общего с «безопасностью». Для всех целей и задач JWT - это почти то же самое, что и ключи API: просто случайные строки, которые вы используете для аутентификации на каком-либо сервере.
Что делает ваш вопрос более интересным, так это используемый протокол (скорее всего OAuth2).
Принцип работы OAuth2 заключается в том, что он был разработан для предоставления клиентам ВРЕМЕННЫХ токенов (например, JWT!) Для проверки подлинности ТОЛЬКО В КОРОТКИЙ ПЕРИОД ВРЕМЕНИ!
Идея состоит в том, что если ваш токен будет украден, злоумышленник может использовать его только в течение короткого периода времени.
С OAuth2 вам приходится периодически повторять аутентификацию на сервере, предоставляя свои имя пользователя / пароль или учетные данные API, а затем возвращая токен взамен.
Поскольку этот процесс происходит время от времени, ваши токены часто меняются, и злоумышленникам становится все труднее постоянно выдавать себя за вас, не проходя через большие неприятности.
Надеюсь, это поможет ^^