Подписанный токен является хорошим методом для всего, где вы хотите выдать токен, а затем, когда он будет возвращен, иметь возможность проверить, что вы выпустили токен, без необходимости хранить какие-либо данные на стороне сервера. Это хорошо для таких функций, как:
- ограниченный по времени, счет-Логин;
- пароль восстанавливающийся;
- анти-XSRF формы;
- отправка формы с ограничением по времени (защита от спама).
Сам по себе он не является заменой cookie-файла сеанса, но если он вообще может устранить необходимость в каком-либо хранилище сеанса, это, вероятно, хорошо, даже если разница в производительности не будет огромной.
HMAC - один из разумных способов создания подписанного токена. Это не будет самым быстрым; Вы можете избежать простого хэша, если знаете об этом и можете избежать атак с расширением. Я оставлю вас, чтобы решить, стоит ли это для вас риска.
Я предполагаю, что hmac()
на любом языке, который вы используете, был настроен на использование подходящего секретного ключа на стороне сервера, без которого у вас не может быть защищенного подписанного токена. Этот секрет должен быть надежным и надежно защищенным, если вы хотите создать вокруг него всю систему аутентификации. Если вам нужно изменить его, все выйдут из системы.
Для целей входа в систему и восстановления пароля вы можете добавить дополнительный коэффициент к токену, номер генерации пароля. Вы можете повторно использовать соль хешированного пароля в базе данных для этого, если хотите. Идея состоит в том, что когда пользователь меняет пароли, он должен лишить законной силы любые выданные токены (за исключением файла cookie в браузере, который выполняет смену пароля, который заменяется переизданным). В противном случае пользователь, обнаруживший, что его учетная запись была взломана, не сможет заблокировать другие стороны.