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

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

Вы можете настроить проверку ключа 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-ключа рекомендуется удалить его из сообщения, чтобы он не отправлялся по сети в бэкэнд-сервис. Это можно сделать с помощью политики типа 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-прокси в качестве шагов обработки. Применяя политику к предварительному потоку запроса, ключи 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