Как формировать и хранить токены для 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/пароля?
  • Вопрос задан
  • 505 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы