Что такое ротация токена обновления и почему это важно?
Погрузимся и обсудим, почему ротация токена обновления — эффективный способ защитить безопасность ваших токенов обновления.
Что такое токен обновления?
Токен обновления — это специальный тип токена, который используется для получения нового токена доступа, когда текущий токен доступа истекает. Ознакомьтесь с нашим предыдущим постом Понимание токенов в OIDC чтобы узнать больше.
В ходе введения мы также упомянули, что в Logto для защиты безопасности вашего токена обновления мы по умолчанию внедрили механизм «ротации токена обновления».
Но что именно такое «ротация токена обновления»? Как это приносит пользу нашим конечным пользователям? Давайте погрузимся!
Что такое ротация токена обновления?
Ротация токена обновления — это механизм, который аннулирует предыдущий токен обновления и выдает новый, когда токен обновления используется для получения нового токена доступа. Этот механизм гарантирует, что токен обновления обновляется до того, как он истечет.
Зачем нам нужна ротация токена обновления?
Токены обновления имеют длительный срок жизни, обычно в течение недель или даже месяцев. И поскольку мы можем получать новые токены доступа с помощью токена обновления, токен обновления также становится привлекательной целью для злоумышленников. Поэтому, согласно OAuth 2.0 BCP, сервер авторизации должен принять одно из следующих мер для предотвращения таких атак.
- Выпуск токенов обновления, привязанных к отправителю: клиент подписывает и предоставляет подпись (
Sec-Token-Binding
) в заголовке запроса обновления, чтобы выданный токен обновления был криптографически связан с конкретным клиентом. Однако в наши дни только некоторые из собственных клиентов привязаны к отправителю, и большинство современных SPA и мобильных клиентов являются публичными. - Ротация токена обновления: сервер авторизации выдает новый токен обновления (обычно при обмене на новый токен доступа) и аннулирует предыдущий. Это снижает риск утечки токена.
Лучшие практики для реализации ротации токена обновления
В Logto, когда пользователь успешно вошел в систему, в базе данных сначала будет создан объект Grant
, а затем выданный токен обновления будет иметь ссылочный grantId
и указывать на самый первый объект Grant.
Всякий раз, когда происходит ротация токена обновления, предыдущий токен обновления будет помечен как использованный, и сервер авторизации Logto выдаст новый токен обновления с тем же grantId
.
Предположим, что предыдущий токен обновления просочился, тогда либо законный клиент, либо злоумышленник использует его для обмена токена доступа. И независимо от того, кто это сделал, утекший токен обновления должен был уже быть обновлен и помечен как использованный. Один из них, кто использует использованный токен обновления во второй раз, уведомит сервер авторизации о нарушении. Сервер авторизации аннулирует все токены обновления с тем же grantId
.
В приведенном выше случае, после срабатывания тревоги, законный клиент сможет только повторно аутентифицироваться через процесс входа в систему, чтобы получить новый токен обновления. С другой стороны, злоумышленник потеряет контроль над вашей системой и будет заблокирован снаружи.
Когда происходит ротация токена обновления?
В Logto поведение по умолчанию для ротации токена обновления определяет:
- Если клиент привязан к отправителю или не является публичным (например, веб-приложения на стороне сервера), то ротация токена обновления происходит, когда он достигает 70% от общего времени жизни (TTL).
- Если клиент является публичным (например, одностраничные веб-приложения), ротация токена обновления происходит каждый раз, когда он используется для обмена на токен доступа. Ответ на обмен токенами вернет как новый токен доступа, так и новый токен обновления.
Как я могу включить/отключить ротацию токена обновления в Logto?
В консоли администратора Logto перейдите к Admin Console > Applications и выберите приложение, в котором вы хотите переключить ротацию токена обновления. На странице с деталями приложения перейдите на вкладку «Расширенные настройки» и прокрутите вниз до конца, вы найдете переключатель вместе с некоторыми другими полезными настройками.
Если вы отключите переключатель, ваш токен обновления никогда не будет обновлен до его истечения. Поэтому мы настоятельно рекомендуем всегда включать ротацию токена обновления.
Итог: Что такое ротация токена обновления и почему это важно?
Ротация токена обновления является лучшей практикой, которая обеспечивает безопасность токена обновления в вашем приложении. Она аннулирует предыдущий токен обновления и выдает новый, когда токен обновления используется для получения нового токена доступа. Этот механизм снижает риск утечки токена и обеспечивает безопасность вашего токена обновления.
Logto следует передовым отраслевым практикам и всегда ставит безопасность пользователей на первое место.
Я надеюсь, что этот блог хорошо объясняет ваши сомнения по механизм ротации токенов обновления. Дайте нам знать, если что-то еще неясно. Ваши отзывы и предложения всегда приветствуются!
Попробуйте Logto сегодня и примите более безопасный опыт аутентификации.