Какова цель "Обновить токен"?

У меня есть программа, которая интегрируется с YouTube Live Streaming API. Он работает на таймерах, поэтому для меня было довольно легко запрограммировать новый токен доступа каждые 50 минут с помощью токена обновления. Мой вопрос: почему?

Когда я аутентифицировал YouTube, он дал мне токен обновления. Затем я использую этот токен обновления, чтобы получить новый токен доступа примерно раз в час. Если у меня есть токен обновления, я могу ВСЕГДА использовать это, чтобы получить новый токен доступа, так как он никогда не истекает. Поэтому я не понимаю, как это безопаснее, чем просто дать мне токен доступа с самого начала и не беспокоить всю систему Token Refresh.

Ответ 1

В основном, токены обновления используются для получения нового токена доступа.

Чтобы четко различать эти два токена и избегать путаницы, вот их функции, приведенные в The OAuth 2.0 Authorization Framework:

  • Токены доступа выдаются сторонним клиентам сервером авторизации с одобрения владельца ресурса. Клиент использует токен доступа для доступа к защищенным ресурсам, размещенным на сервере ресурсов.
  • Обновить токены - это учетные данные, используемые для получения токенов доступа. Обновить токены выдаются клиенту сервером авторизации и используются для получения нового токена доступа, когда токен доступа становится недействительным или истекает, или для получения дополнительных токенов доступа с одинаковой или более узкой областью.

Теперь, чтобы ответить на ваш вопрос о том, почему вы все еще выдавали токен обновления вместо того, чтобы просто защищать токен доступа, основная причина, предоставляемая инструментами Internet Engineering Task Force в токенах Refresh:

Существует причина безопасности, refresh_token только обменивается с сервером авторизации, тогда как access_token обменивается с серверами ресурсов. Это уменьшает риск длительного использования access_token в "токене доступа" в течение часа, с токеном обновления в течение года или с отменой "до" отзыва "против" токена доступа, который отменяется без обновления лексема ".

Для получения более подробной и полной информации об OAuth 2.0 Flow, пожалуйста, попробуйте следующие ссылки:

Ответ 2

@Teyam упомянуть SO сообщение Почему OAuth v2 имеет и токены доступа и обновления? но я предпочитаю другой ответ: fooobar.com/info/16809/...

TL; DR refresh_token не приносит повышенной безопасности. Это с целью улучшить масштабируемость и производительность. Затем access_token может быть сохранен только в некотором быстром временном хранилище (например, в памяти). Это также позволяет разделять сервер авторизации и ресурсов.