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

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

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

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

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

Этот антипаттерн связан с антипаттерном установки длительного срока действия токенов OAuth .

Антипаттерн

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

В следующем примере политики OAuthV2 показана отсутствующая конфигурация для <RefreshTokenExpiresIn> :

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

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

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

Влияние

  • Если токен обновления создается без истечения срока действия, есть два основных последствия:
    • Токен обновления можно использовать в любое время в будущем, возможно, в течение многих лет, для получения токена доступа. Это может иметь последствия для безопасности.
    • Строка в Cassandra, содержащая токен обновления, никогда не будет удалена. Это приведет к накоплению данных в Cassandra.
  • Если вы не используете токен обновления для получения нового токена доступа, а вместо этого создаете новый токен обновления и токен доступа, старый токен обновления останется в Cassandra. В результате токены обновления будут продолжать накапливаться в Cassandra, что приведет к дальнейшему раздуванию, увеличению использования диска и более сильному сжатию и в конечном итоге приведет к задержкам чтения/записи в Cassandra.

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

Используйте достаточно короткий срок действия для токенов обновления и доступа. См. рекомендации по установке сроков действия токенов обновления и доступа. Обязательно укажите в политике конфигурацию срока действия как для токена доступа, так и для токена обновления. Дополнительные сведения о настройке политики см. в документации по политике OauthV2 .

Рекомендации специально для клиентов Edge for Private Cloud

В этом разделе описаны лучшие практики специально для клиентов Edge for Private Cloud.

Укажите срок действия токена обновления по умолчанию.

По умолчанию, если срок действия токена обновления не указан в конфигурации политики, Edge создает токен обновления без срока действия. Это поведение можно переопределить с помощью следующей процедуры:

  1. На узле процессора сообщений отредактируйте или создайте файл переопределения конфигурации $APIGEE_ROOT/customer/application/message-processor.properties . Убедитесь, что этот файл доступен для чтения пользователю apigee .
  2. Добавьте в файл следующую строку:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    Это установит срок действия токена обновления по умолчанию, если он не указан в политике, равным 1 часу. Вы можете изменить это значение по умолчанию в соответствии с потребностями вашего бизнеса.
  3. Перезапустите службу обработчика сообщений:
    apigee-service edge-message-processor restart
  4. Повторите описанные выше шаги один за другим во всех узлах процессора сообщений.

Лучшие практики в Кассандре

Попробуйте обновить Apigee до последней общедоступной версии. Apigee продолжает выпускать исправления и улучшения, которые улучшают и оптимизируют управление токенами в Apigee. В Apigee токены доступа и обновления хранятся в Cassandra в пространстве ключей «kms». Вы должны убедиться, что для стратегии сжатия этого пространства ключей установлено значение LeveledCompactionStrategy . Вы должны проверить, что следующие индексы отсутствуют :
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx #f0f0f0 и
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

Вы также можете уменьшить gc_grace_seconds в таблице kms.oauth_20_access_tokens с 10 дней по умолчанию до более низкого значения (например, 3 дней), чтобы гарантировать, что захоронения, созданные в результате удаления токенов, быстрее удаляются из хранилища данных.

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