Задать вопрос

Как формировать и хранить токены для Token-based аутентификации (stateless)?

Чем должен быть токен?
Возможна ли такая реализация:
Таблица Users(Id, Email, PasswordHash)
1 : M
Таблица Tokens(Id, Salt, ExpiredIn, UserId).
Токен формируется на основе Encrypt(User.Email + User.PasswordHash + Token.Salt) = tokenValue.
Пользователю, в ответ на Email/пароль, возвращается {tokenValue, tokenId, expiredIn}.
При каждом запросе к защищенному ресурсу, мы получаем от пользователя tokenId, tokenValue.
Выполняем еще раз метод Encrypt над данными в БД, сравниваем с пришедшим tokenValue и проверяем ExpiredIn.
Это немножко упростит логику аутентификации - можно не заботиться об удалении токенов при изменении credentials(email, password). Изменил credentials с одного устройства - на всех остальных токены уже невалидные.

Или же хранить токен в БД, как рандомный хеш, сформированный при вводе Email/пароля, но не содержащий в себе зашифрованных Email/пароля?
  • Вопрос задан
  • 511 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Инженер по тестированию: от новичка до автоматизатора
    9 месяцев
    Далее
  • Яндекс Практикум
    Продвинутый Go-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 ₽
ITK academy Нижний Новгород
от 75 000 до 125 000 ₽