Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
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 для работы в частном облаке.
В этом разделе описаны лучшие практики, разработанные специально для клиентов Edge for Private Cloud.
Укажите срок действия токена обновления по умолчанию.
По умолчанию, если в конфигурации политики не указан срок действия токена обновления, Edge создает токен обновления без указания срока действия. Вы можете изменить это поведение, выполнив следующую процедуру:
- На узле обработчика сообщений отредактируйте или создайте файл переопределения конфигурации
$APIGEE_ROOT/customer/application/message-processor.properties. Убедитесь, что этот файл доступен для чтения пользователюapigee. - Добавьте в файл следующую строку:
Это установит время истечения срока действия токена обновления по умолчанию, если оно не указано в политике, равным 1 часу. Вы можете изменить это значение по умолчанию в соответствии с потребностями вашего бизнеса.conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- Перезапустите службу обработки сообщений:
apigee-service edge-message-processor restart
- Повторите описанные выше шаги на всех узлах обработки сообщений по очереди.
Рекомендации по использованию Cassandra
Попробуйте обновить Apigee до последней общедоступной версии. Apigee продолжает выпускать исправления и улучшения, которые постоянно совершенствуют и оптимизируют управление токенами в Apigee. В Apigee токены доступа и обновления хранятся в Cassandra в пространстве ключей «kms». Убедитесь, что стратегия сжатия этого пространства ключей установлена наLeveledCompactionStrategy . Проверьте, отсутствуют ли следующие индексы:- kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx #f0f0f0 and
- kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx
Также можно уменьшить значение gc_grace_seconds в таблице kms.oauth_20_access_tokens со значения по умолчанию в 10 дней до меньшего значения (например, 3 дня), чтобы обеспечить более быстрое удаление из хранилища данных записей, созданных в результате удаления токенов.