Пару вопросов про JWT
Доброго времени суток.
Делаю API на ASP.Net Core, использую авторизацию через JWT и появилось пару вопросов:
- Нужно ли выдавать новый Refresh-Token каждый раз, при обновлении токена доступа? (В каком то из вопросов на enSO видел комментарий, что нужно, чтобы повысить безопасность, правда ли?)
- Если выдавать новый Refresh-Token нужно, то нужно/можно ли удалять текущий (с которым пришел запрос) Refresh-Token из базы? (Токен живет 5 минут, если каждые 5 минут заполнять базу новыми Refresh-Tokena'ми (которые живут 7 дней), то это будет как-то слишком много данных, нет?)
- Если выдают каждый раз новый Refresh-Token, то для чего делают их время существования большими? Например, 7 дней, для того, что если пользователь вошел и не заходил на сайт, например, 3 дня, то он смог обновить токен и продолжить работать без повторной авторизации?
- Как сделать моментальный выход из системы для определенного пользователя? Например при обновлении пароля в ВК моментально выходит везде (телефоны, браузеры и пр.).
UPD-1: Ответ на первый вопрос найден:
Рефреш токен (RT) — эти токены выполняют только одну специфичную задачу — получение нового токена доступа. И на этот раз без сервера авторизации не обойтись. Они долгоживущие, но одноразовые.