HMAC Token
Алгоритм генерации токена авторизации и его проверки без сохранения токена в БД на основе алгоритма HMAC.
- Выбираем желаемый период жизни токена (несколько минут, часов, дней и т.д.)
- Сохраняем текущее время (далее временная метка)
- Генерируем хеш на основе логина юзера, временной метки и значении соли
- Передаём клиенту хеш и временную метку
- Клиент при выполнении действий, требующих авторизации, посылает хеш, логин и временную метку
- На основании логина, соли и временой метки сервер снова генерирует хеш, и сравнивает с хешем от клиента. Если хеши не совпадают, запрос отклоняется
- Иначе сравнивается разность текущего времени и временной метки с периодом. Если меньше или равно периоду, то запрос обрабатывается, иначе так же отклоняется
Внимание! В примере для наглядности использован ненадёджный алгоритм хеширования MD5! Рекомендуется использовать более сложные алгоритмы хеширования!