Я с трудом понимаю, насколько токены обновления JWT безопаснее, чем обычные токены доступа JWT с длительным сроком службы. Я понимаю, что, сохраняя срок жизни маркеров доступа JWT, он ограничивает возможность злоумышленников злоупотреблять им. Это предполагает, что уровень SSL HTTPS каким-то образом был обойден злоумышленником для получения токена доступа JWT в первую очередь.
Каким образом токены обновления JWT решают эту проблему в точности? По истечении срока действия токена доступа вам потребуется передать токен обновления, который также может быть взломан, если мы предположим, что HTTPS недостаточно безопасен. Если злоумышленник получает контроль над токеном обновления, он получает доступ к большому количеству токенов доступа, поскольку токены обновления обычно имеют длительный срок службы. По расширению можно также сказать, что первоначальная аутентификация по имени пользователя / паролю может быть украдена, если протокол HTTPS скомпрометирован.
Поскольку токен обновления должен храниться во внешнем интерфейсе (я создаю загрузочное приложение Angular / Spring), мы должны позаботиться о том, чтобы токен обновления также не мог быть украден на стороне клиента. LocalStorage явно не подходит для хранения токена обновления, поскольку он не предназначен для безопасного хранения. Они также не подходят для отправки каждого запроса, так как в противном случае они будут украдены вместе с токеном доступа, что в первую очередь противоречит цели получения токенов доступа с коротким сроком службы. Где хранить маркер обновления?
Если я хочу предоставить Запомнить меня функциональность на странице входа в систему, Могу ли я просто установить токен обновления с бесконечной продолжительностью жизни?
Я уже прошел несколько хорошо написанных ответов по следующим ссылкам (и другим):
Что если украсть JWT?
Рекомендации SPA для аутентификации и управления сеансами
https://security.stackexchange.com/questions/119371/is-refreshing-an-expired-jwt-token-a-good-strategy
Но я не удовлетворен этими 3 вопросами.