#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. Спасибо за ответ, но он не затрагивает вопрос, который я задал 🙂