Принятый здесь ответ на почему токены доступа OAuth2 истекают:
- Многие провайдеры поддерживают токены-носители, которые очень слабые по безопасности. Делая их недолговечными и требуя обновления, они ограничивают время, когда злоумышленник может злоупотреблять украденным токеном. (Что это значит? Я полагаю, что это означает, что вы разрешаете передачу без TLS? Что-нибудь еще?).
- Маломасштабное развертывание не хочет выполнять поиск базы данных по каждому вызову API, поэтому вместо этого они выдают самокодированный токен доступа, который может быть проверен путем дешифрования. Однако это также означает, что нет способа отменить эти жетоны, чтобы они были выпущены на короткое время и должны быть обновлены.
- Для токена обновления требуется аутентификация клиента, которая делает ее более сильной. В отличие от перечисленных токенов доступа, он обычно реализуется при поиске базы данных.
Предполагая, что мы не поддерживаем нешифрованную передачу токена доступа, он заботится о первой точке маркера.
Предполагая, что мы отлично справляемся с поиском базы данных против revokable, полностью произвольный токен доступа, заботится обо второй.
Для мобильных приложений аутентификация клиента не может быть более сильной, потому что "client_id и client_secret, полученные во время регистрации, встроены в исходный код вашего приложения. В этом контексте клиент_секретно не рассматривается как секрет". (Google). Это устраняет третью проблему.
Итак, в чем преимущество разделения кратковременных токенов доступа и долгоживущих токенов обновления в этом сценарии? Является ли "нормально" просто выдавать не истекающие токены доступа и игнорировать всю часть токенов обновления?