Configura la validación de la clave de API

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Para configurar la validación de la clave de API para una API, puedes adjuntar una política del tipo de verificación de la clave de API. La única configuración necesaria para una política VerifyAPIKey es la ubicación esperada de la clave de API en la solicitud del cliente. El proxy de API comprobará la ubicación que especifiques y extraerá la clave de API. Si la clave de API no está presente en la ubicación esperada, se producirá un error y se rechazará la solicitud. Las claves de API se pueden ubicar en un parámetro de consulta, un parámetro de formulario o un encabezado HTTP.

Por ejemplo, la configuración de la política que se muestra a continuación define la ubicación esperada de la clave como un parámetro de consulta llamado apikey. Una solicitud correcta debe presentar la clave de API como un parámetro de consulta anexado a la solicitud, por ejemplo, ?apikey=Y7yeiuhcbKJHD790.

Para verificar claves de API, crea la siguiente política:

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

Esta política se puede adjuntar a cualquier API que necesites proteger.

Puedes encontrar la documentación completa de este tipo de política en el tema de referencia de la política, Política de VerifyAPIKey .

Los proxies de API pasan automáticamente todos los encabezados HTTP y los parámetros de consulta que están presentes en la solicitud. Por lo tanto, después de que se haya verificado la clave de API, se recomienda quitarla del mensaje para que no se envíe por medio del cable al servicio de backend. Para hacer esto, puedes usar una política de tipo AssignMessage como se indica a continuación:

<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>

Política adjunta

Las políticas se deben adjuntar a un flujo de proxy de API como pasos de procesamiento. Si se aplica la política al PreFlow de solicitud, las claves de API se verifican en cada solicitud que recibe el proxy de API desde una app cliente. Después de la verificación, la clave de API se quita de la solicitud saliente.

Adjunta las políticas al ProxyEndpoint del proxy de API para protegerlas de la siguiente manera:

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

Después de adjuntar la política, implementa el proxy de la API.

Envía una solicitud con una clave de API válida

Como administrador de tu organización, puedes recuperar cualquier clave de API de la aplicación de la siguiente manera:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \
  -H "Authorization: Bearer $TOKEN"

En el ejemplo anterior, $TOKEN está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.

El perfil de laaplicación que se muestra para esta llamada proporciona la clave de consumidor (clave de API) y el secreto. El valor de la clave de consumidor es el valor que debes usar para la clave de API en la solicitud a la API protegida.

Por ejemplo, una solicitud que no incluya una clave de API generará una falla en la autorización.

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282

El mensaje de error indica que la política buscó una clave de API, pero no encontró una válida:

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

Cuando la clave de consumidor de la app se incluye como un parámetro de búsqueda, el resultado esperado es la autorización exitosa:

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

El resultado esperado es una respuesta exitosa del servicio meteorológico.

Si se modifica el valor de la clave de API en la solicitud, se produce un error de autorización:

curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Se produce el siguiente resultado:

OAuth Failure : Consumer Key is Invalid