Я являюсь автором библиотеки узлов, которая обрабатывает аутентификацию на некоторой глубине, express-stormpath, поэтому я буду звонить с некоторой информацией здесь.
Прежде всего, JWTs обычно NOT зашифрован. Хотя существует способ шифрования JWT (см.: JWEs), это не очень распространено на практике по многим причинам.
Далее, любая форма аутентификации (с использованием JWT или нет) может подвергаться атакам MitM-атак (man-in-the-middle). Эти атаки происходят, когда злоумышленник может ПРОСМОТРЕТЬ ваш сетевой трафик, когда вы делаете запросы через Интернет. Это то, что может видеть ваш интернет-провайдер, NSA и т. Д.
Это то, что SSL помогает предотвратить: путем шифрования трафика NETWORK с вашего компьютера -> на каком-либо сервере при аутентификации, сторонняя организация, контролирующая сетевой трафик, может НЕ увидите ваши жетоны, пароли или что-то в этом роде, если они не смогут получить копию секретного ключа SSL сервера (маловероятно). Именно по этой причине SSL является ОБЯЗАТЕЛЬНЫМ для всех форм аутентификации.
Допустим, однако, что кто-то сможет использовать свой SSL и способен просматривать фишку: ответ на ваш вопрос в том, что ДА, злоумышленник будет иметь возможность использовать этот маркер, чтобы выдавать себя за вас и делать запросы на ваш сервер.
Теперь, это где протоколы бывают.
JWTs только один стандарт для маркеров аутентификации. Их можно использовать практически для чего угодно. Причина JWT в том, что вы можете вставлять в них дополнительную информацию, и вы можете подтвердить, что никто не с ней с ней столкнулся (подписание).
ОДНАКО, сами JWT не имеют ничего общего с «безопасностью». Для всех целей и целей JWT более или менее совпадают с ключами API: просто случайные строки, которые вы используете для аутентификации на каком-то сервере где-то.
Что делает ваш вопрос более интересным, используется протокол (скорее всего, OAuth2).
Способ OAuth2 работает, заключается в том, что он был предназначен для предоставления клиентам TEMPORARY токенов (например, JWT!) Для аутентификации только для КОРОТКОГО ПЕРИОДА ТОЛЬКО!
Идея состоит в том, что если ваш токен украден, злоумышленник может использовать его только в течение короткого периода времени.
С помощью OAuth2 вы должны повторно идентифицировать себя с сервером так часто, указав свои имя пользователя/пароль или учетные данные API, а затем получая токен обратно в обмен.
Поскольку этот процесс происходит время от времени, ваши жетоны будут часто меняться, что делает его «более трудным» для нападавших постоянно выдавать себя за вас, не переживая больших неприятностей.
Надеется, что это помогает ^^
Именно поэтому токены часто действительны только в течение короткого периода времени. И да, вы должны использовать HTTPS, если вас беспокоит конфиденциальность ваших данных. –
@JonathonReinhart Но, если токен скоро истечет, мой клиент должен будет получить новый токен, повторно проверяя его время от времени. Разве это не утомительно? – smwikipedia
@JonathonReinhart Я думаю, я понимаю, почему токен недолговечен.Таким образом, серверу не нужно отслеживать истечение срока действия токена и, таким образом, уступать место масштабируемости. Это своего рода «компромисс» между «более тонким контролем истечения токена» и «лучшей масштабируемостью». – smwikipedia