Проверка подлинности на основе токенов в REST API
Я пытаюсь реализовать подход аутентификации на основе токенов:
Каждый успешный вход создает новый токен.
Если пользователь выбирает «держать меня в системе» или пользователь использует мобильное устройство, токен сохраняется в базе данных Redis без истечения срока действия. В противном случае токен истекает через 20 минут.
После проверки подлинности пользователя токен проверяется по каждому последующему запросу в моей базе данных Redis.
Мне интересно, как я могу идентифицировать устройства. В случае мобильных устройств, я могу использовать идентификатор устройства. Но как я могу определить браузер?
Пример: пользователь входит в систему с помощью Chrome и выбирает «держать меня в системе». Токен создается и сохраняется с именем браузера в Redis. Если пользователь входит в систему из Firefox, сохраняет маркер и «Firefox» в базе данных. Я сохраняю токен в Redis, тогда как токен создается при успешной аутентификации. Можно ли сохранить только токен и браузер, в котором он используется? Или мне тоже нужно сохранять IP?
Дополнительный вопрос: как избежать, чтобы злоумышленники украли токен из cookie?