Как предотвратить обновление украденного токена доступа
Сценарий: у вас есть токен обновления, который действителен в течение более длительного периода времени и токен доступа, который действителен в течение более короткого периода времени.
Настройка: существует клиент, сервер приложений и сервер аутентификации.
- Клиент сохраняет токен доступа.
- Сервер приложений хранит токен обновления.
- Сервер аутентификации передает токен обновления + доступа.
Одно из преимуществ заключается в том, что украденный токен доступа может использоваться только на время, когда оно действительно.
Скажем, хакер крадет токен доступа, который действителен в течение 30 минут. Когда хакер делает запрос с действительным, но истекшим красным маркером доступа через 30 минут, сервер приложений обновляет его с помощью токена обновления, таким образом, хакер получает новый действительный токен и не истекший токен доступа.
Как это можно предотвратить?
Сервер приложений не должен иметь токен обновления.
В OAuth2.0 client
должен хранить токен обновления.
Чтобы использовать токен обновления, чтобы отличить новый токен доступа, client
должен представить токен обновления (вместе с идентификатором клиента и секретным ключом) на сервер авторизации.
Невозможно остановить хакера от обновления токена, если
-
Исходный пользователь сбросил пароль, и сервер AUTH удалил все предыдущие токены обновления.
-
Уменьшите время действия токена обновления ближе к действительности accesstoken.
В обоих случаях мы полагаемся на недействительность токена обновления.
Похожие вопросы
Посмотрите другие вопросы по меткам oauth-2.0 token access-token refresh-token jwt или Задайте вопрос