Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Para configurar la validación de claves de API en una API, adjunta una política de tipo Verify API Key. El único ajuste obligatorio de 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á en la ubicación esperada, se genera un error y se rechaza la solicitud. Las claves de API se pueden encontrar 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 de la clave esperada como un parámetro de consulta llamado apikey
. Para que una solicitud se realice correctamente, debe presentar la clave de API como un parámetro de consulta añadido a la solicitud. Por ejemplo,?apikey=Y7yeiuhcbKJHD790
.
Para verificar las claves de API, crea la siguiente política:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Esta política se puede asociar a cualquier API que necesites proteger.
Puedes consultar la documentación completa de este tipo de política en el tema de referencia de la política VerifyAPIKey.
Los proxies de API transfieren automáticamente todos los encabezados HTTP y los parámetros de consulta que se incluyan en la solicitud. Por lo tanto, una vez que se haya verificado la clave de API, es recomendable eliminarla del mensaje para que no se envíe a través de la red al servicio backend. Para ello, puedes usar una política de tipo AssignMessage
de la siguiente manera:
<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>
Adjunto de la política
Las políticas deben adjuntarse a un flujo de proxy de API como pasos de procesamiento. Al aplicar la política a la solicitud PreFlow
, las claves de API se verifican en cada solicitud que recibe el proxy de API de una aplicación cliente. Después de la verificación, la clave de API se elimina de la solicitud saliente.
Vincula las políticas al ProxyEndpoint del proxy de API que quieras proteger de la siguiente manera:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
Una vez que hayas adjuntado la política, despliega el proxy de API.
Enviar una solicitud con una clave de API válida
Como administrador de tu organización, puedes obtener la clave de API de cualquier aplicación de la siguiente forma:
curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -H "Authorization: Bearer $TOKEN"
Donde $TOKEN
es tu token de acceso OAuth 2.0, tal como se describe en Obtener un token de acceso OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usar curl. Para ver una descripción de las variables de entorno que puedes usar, consulta Definir variables de entorno para solicitudes a la API de Apigee.
El perfil de aplicación que se devuelve en esta llamada proporciona la clave de consumidor (clave de API) y el secreto. El valor de la clave de consumidor es el que usas para la clave de API en tu solicitud a la API protegida.
Por ejemplo, si una solicitud no incluye una clave de API, se producirá un error de autorización.
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282
El mensaje de error indica que la política ha buscado una clave de API, pero no ha encontrado ninguna válida:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
Cuando la clave de consumidor de la aplicación se incluye como parámetro de consulta, el resultado esperado es una autorización correcta:
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
El resultado esperado es una respuesta correcta 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"
Resultados:
OAuth Failure : Consumer Key is Invalid