Configuración de la validación de la clave API

Esta página se aplica a Apigee y Apigee híbrido .

Ver la documentación de Apigee Edge .

Puede configurar la validación de la clave API para una API adjuntando una política de tipo "Verificar clave API". El único ajuste necesario para una política VerifyAPIKey es la ubicación esperada de la clave API en la solicitud del cliente. El proxy de la API comprobará la ubicación que especifique y extraerá la clave API. Si la clave API no se encuentra en la ubicación esperada, se generará un error y se rechazará la solicitud. Las claves API pueden estar en un parámetro de consulta, un parámetro de formulario o un encabezado HTTP.

Por ejemplo, la siguiente configuración de política define la ubicación de la clave esperada como un parámetro de consulta llamado apikey . Una solicitud exitosa debe presentar la clave API como un parámetro de consulta adjunto a la solicitud, por ejemplo, ?apikey=Y7yeiuhcbKJHD790 .

Para verificar las claves API, cree la siguiente política:

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

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

Puede encontrar documentación completa de este tipo de política en el tema de referencia de políticas, política VerifyAPIKey .

Los proxies de API pasan automáticamente por todos los encabezados HTTP y parámetros de consulta presentes en la solicitud. Por lo tanto, una vez verificada la clave de API, conviene eliminarla del mensaje para que no se envíe por cable al servicio backend. Puede hacerlo mediante 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>

Anexo de póliza

Las políticas deben asociarse a un flujo de proxy de API como pasos de procesamiento. Al aplicar la política al PreFlow de la solicitud, las claves de API se verifican en cada solicitud que recibe el proxy de API desde una aplicación cliente. Tras la verificación, la clave de API se elimina de la solicitud saliente.

Adjunte las políticas al ProxyEndpoint del proxy API que se va a proteger 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, implemente el proxy API.

Enviar una solicitud con una clave API válida

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

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

Donde $TOKEN se establece en su token de acceso de OAuth 2.0, como se describe en "Obtención de un token de acceso de OAuth 2.0" . Para obtener información sobre las opciones curl utilizadas en este ejemplo, consulte "Uso de curl" . Para obtener una descripción de las variables de entorno utilizadas, consulte "Configuración de variables de entorno para solicitudes de la API de Apigee" .

El perfil de la aplicación que se devuelve para esta llamada proporciona la clave de consumidor (clave API) y el secreto. El valor de la clave de consumidor es el que se utiliza para la clave API en la solicitud a la API protegida.

Por ejemplo, una solicitud que no incluye una clave API genera un error de autorización.

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

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

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

Cuando la clave del consumidor de la aplicación se incluye como parámetro de consulta, el resultado esperado es una 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.

Modificar el valor de la clave API en la solicitud da como resultado un error de autorización:

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

Resultados en:

OAuth Failure : Consumer Key is Invalid