Может ли токен доступа пережить токен обновления?

#oauth-2.0 #oauth #openid-connect

#oauth-2.0 #oauth #OpenID-connect

Вопрос:

Я прочитал различные документы от PingIdentity, Microsoft, auth0 и даже RFC 6749, пытаясь ответить на простой вопрос: может ли токен доступа пережить токен обновления? Контекст — OAuth 2.0.

Позвольте мне объяснить на примере. Допустим, у нас есть токен обновления со временем жизни (TTL) 10 дней. Срок действия каждого токена доступа составляет 3 дня. Проблемы возникли в 00:00 в день 1. Учитывая, что мы обновляем эти токены доступа только по истечении срока действия, это означает, что мы получаем токен доступа в день 1, 4, 7 и 10. Теперь, истекает ли срок действия последнего токена доступа через один день (в конце 10-го дня) или через три дня (в конце 12-го дня)?

В этой недавней статье Microsoft об аутентификации LinkedIn они указывают первый вариант: токен доступа истекает одновременно с токеном обновления, выдаваясь с TTL всего один день (ну, возможно, чуть меньше), вместо трех дней. Другие ничего не указывают и просто пропускают этот вопрос, полагаясь на то, что недолговечные токены доступа делают обсуждение бессмысленным. Но иногда (как в статье) эти токены доступа живут неделями, а токен обновления живет год, что в целом отличается от 5-минутного срока службы.

Я предполагаю, что это зависит от реализации / поставщика, поскольку это явно не указано ни в одном RFC (который я смог найти).

Комментарии:

1. Если вы выдаете токен доступа только на оставшееся время, оставшееся для токена обновления, то вы потенциально можете выдавать токен, действительный в течение оставшихся секунд или минут. Я думаю, что имеет смысл использовать токен доступа, срок действия которого истекает через часы, а не дни, тогда вам будет удобнее выдавать токен, даже если токен обновления истекает в ближайшее время. Тогда логика для клиента проще: если у меня есть действительный токен обновления, я смогу получить токен доступа, который, как я могу ожидать, будет действовать в течение x времени.

2. @ryanm Я не запрашивал ввод данных для реализации. Речь шла о понимании того, в какой степени время жизни токена обновления и доступа было определено в спецификации. Приведенный выше пример был просто педагогическим средством достижения цели. Вы можете заменить «дни» на «минуты», если это помогает донести суть: истекает ли срок действия конечного токена доступа вместе с токеном обновления или его срок службы не зависит от настроек поставщиков удостоверений для токена обновления.

Ответ №1:

Получатель (например, API) токена доступа никогда не видит токен обновления, поэтому получатель будет принимать токен доступа, пока он действителен (не истек).

Комментарии:

1. Спасибо за ответ, но он не затрагивает вопрос, который я задал 🙂