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