Антишаблон: установите длительный срок действия для токенов OAuth.

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Apigee Edge предоставляет платформу OAuth 2.0 для защиты API. OAuth2 — одна из самых популярных схем аутентификации и авторизации на основе токенов с открытым стандартом. Это позволяет клиентским приложениям получать доступ к API от имени пользователей, не требуя от пользователей раскрытия своего имени пользователя и пароля.

Apigee Edge позволяет разработчикам генерировать токены доступа и/или обновления, реализуя любой из четырех типов предоставления OAuth2 — учетные данные клиента , пароль , неявный код и код авторизации — с использованием политики OAuthv2 . Клиентские приложения используют токены доступа для использования безопасных API. Каждый токен доступа имеет свой срок действия, который можно установить в политике OAuthv2 .

Токены обновления выдаются дополнительно вместе с токенами доступа с некоторыми типами грантов. Токены обновления используются для получения новых действительных токенов доступа после истечения срока действия или отзыва исходного токена доступа. Срок действия токенов обновления также можно установить в политике OAuthv2 .

Антипаттерн

Установка длительного срока действия токена доступа и/или токена обновления в политике OAuthv2 приводит к накоплению токенов OAuth и увеличению использования дискового пространства на узлах Cassandra.

В следующем примере политики OAuthV2 показан длительный срок действия токенов обновления — 200 дней.

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

В приведенном выше примере:

  • Токен доступа установлен с достаточно меньшим сроком действия — 30 минут.
  • Токен обновления имеет очень длительный срок действия — 200 дней.
  • Если трафик к этому API составляет 10 запросов в секунду, то он может генерировать до 864 000 токенов в день.
  • Поскольку срок действия токенов обновления истекает только через 200 дней, они сохраняются в хранилище данных (Cassandra) в течение длительного времени, что приводит к непрерывному накоплению.

Влияние

  • Приводит к значительному росту использования дискового пространства в хранилище данных (Кассандра).
  • Для пользователей частного облака это может увеличить затраты на хранилище или, в худшем случае, диск может переполниться, что приведет к ошибкам во время выполнения или сбоям в работе.

Лучшая практика

Используйте соответствующий более низкий срок действия для токенов доступа и обновления OAuth в зависимости от ваших конкретных требований безопасности, чтобы они быстро очищались и тем самым избегали накопления.

Установите срок действия для токенов обновления таким образом, чтобы он был действителен в течение немного более длительного периода, чем токены доступа. Например, если вы установили 30 минут для токена доступа, а затем установили 60 минут для токена обновления.

Это гарантирует, что:

  • У вас достаточно времени для использования токена обновления для создания новых токенов доступа и обновления после истечения срока действия токена доступа.
  • Срок действия токенов обновления истечет через некоторое время, и их можно будет своевременно удалить, чтобы избежать накопления.

Дальнейшее чтение