Настройка проверки ключа API

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

Вы можете настроить проверку ключа API для API, прикрепив политику типа «Проверить ключ API». Единственным обязательным параметром политики проверки ключа API является ожидаемое расположение ключа API в клиентском запросе. Прокси-сервер API проверит указанное вами местоположение и извлечет ключ API. Если ключ API отсутствует в ожидаемом месте, выдается ошибка и запрос отклоняется. Ключи API могут находиться в параметре запроса, параметре формы или HTTP-заголовке.

Например, приведенная ниже конфигурация политики определяет ожидаемое расположение ключа как параметр запроса с именем apikey . Успешный запрос должен представить ключ API в качестве параметра запроса, добавленного к запросу, например ?apikey=Y7yeiuhcbKJHD790 .

Чтобы проверить ключи API, создайте следующую политику:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Эту политику можно прикрепить к любому API, который вам нужно защитить.

Подробную документацию по этому типу политики можно найти в справочном разделе политики «Проверка политики ключа API» .

Прокси-серверы API автоматически передают все HTTP-заголовки и параметры запроса, которые присутствуют в запросе. Поэтому после проверки ключа API рекомендуется удалить его из сообщения, чтобы ключ API не пересылался по сети во внутреннюю службу. Вы можете сделать это, используя политику типа AssignMessage следующим образом:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

Приложение к политике

Политики должны быть прикреплены к потоку прокси-сервера API в качестве этапов обработки. Применяя политику к запросу PreFlow, ключи API проверяются при каждом запросе, полученном прокси-сервером API от клиентского приложения. После проверки ключ API удаляется из исходящего запроса.

Прикрепите политики к ProxyEndpoint прокси-сервера API, который необходимо защитить, следующим образом:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

После прикрепления политики разверните прокси-сервер API.

Отправка запроса с действительным ключом API

Как администратор вашей организации, вы можете получить ключ API любого приложения следующим образом:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

Профиль приложения, возвращаемый для этого вызова, предоставляет ключ потребителя (ключ API) и секрет. Значение потребительского ключа — это значение, которое вы используете для ключа API в своем запросе к защищенному API.

Например, запрос, который не включает ключ API, приводит к сбою авторизации.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Сообщение об ошибке указывает, что политика проверила ключ API, но не нашла действительный ключ:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Если потребительский ключ приложения включен в качестве параметра запроса, ожидаемым результатом будет успешная авторизация:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Ожидаемый результат – успешный ответ метеослужбы.

Изменение значения API-ключа в запросе приводит к сбою авторизации:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Результаты:

OAuth Failure : Consumer Key is Invalid

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

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password