Я создаю приложение для внешнего Reactjs и внутреннего SpringBoot (REST).
Я хочу использовать токены JWT для безопасности. Из-за проблем безопасности, которые могут подразумевать кражу маркера обновления JWT, я подумал спросить вас, является ли следующий сценарий допустимым:
Back-конец
- при входе создать доступ-JWT и обновить-JWT
- в обоих разделах полезной нагрузки установить одинаковый уникальный UUID (поэтому я создаю «связь» между ними).
- сохранить хеш-код refresh-JWT в БД (для проверки в будущем)
- возвращает как ответ в теле доступа-JWT и как cookie-обновление-JWT.
Фронтальный
- Store access-JWT в локальном хранилище
- Store refresh-JWT как cookie
Теперь при каждом запросе от внешнего интерфейса я буду относить оба токена (access-JWT в заголовке и refresh-JWT в виде cookie). Я проверяю их обоих, имеют ли они одинаковый уникальный UUID. Если они это сделают, я продолжу процесс проверки для них.
Делая это, я прыгаю, чтобы устранить атаки XSS и CSRF, предполагая, что они не будут выполняться одновременно. Так что, если access-JWT украден, у атакующего не будет refresh-JWT и наоборот.
Пожалуйста, поделитесь своими мыслями. Спасибо.