Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Vídeo: consulta este breve vídeo para obtener una introducción sobre cómo proteger tu API.
Qué vas a aprender
En este tutorial se explica cómo hacer lo siguiente:
- Crea un proxy de API que requiera una clave de API.
- Crea un producto de API, un desarrollador y una aplicación para desarrolladores.
- Llama a tu API con una clave de API.
Es importante proteger tu API frente a accesos no autorizados. Una forma de hacerlo es con claves de API.
Cuando una aplicación hace una solicitud a un proxy de API configurado para verificar una clave de API, la aplicación debe proporcionar una clave válida. En el tiempo de ejecución, la política Verify API Key comprueba que la clave de API proporcionada:
- Es válido
- No se ha revocado
- Coincide con la clave de API del producto de API que expone los recursos solicitados.
Si la clave es válida, se permite la solicitud. Si la clave no es válida, la solicitud dará como resultado un error de autorización.
Crear el proxy de API
Apigee en la consola de Cloud
En la Google Cloud consola, ve a la página Desarrollo de proxy > Proxies de API.
- Selecciona tu organización en el selector de proyectos del panel de Google Cloud. El nombre de la organización es el mismo que el nombre de tu proyecto de Google Cloud.
- Haz clic en + Crear.
- En el panel Crear un proxy, en Plantilla de proxy, selecciona Proxy inverso (el más habitual). Un proxy inverso dirige el tráfico entrante a un servicio de backend.
- Configura el proxy de la siguiente manera:
Nombre Valor Nombre del proxy helloworld_apikey
Ruta base /helloapikey
La ruta base del proyecto forma parte de la URL que se usa para enviar solicitudes al proxy de la API.
Descripción hello world protected by API key
Destino (API actual) http://mocktarget.apigee.net
Define la URL de destino que invoca Apigee en una solicitud al proxy de API. Este destino solo devuelve una respuesta sencilla:
Hello, Guest!
. - Haz clic en Siguiente.
- Implementar (opcional). Deje estos campos en blanco.
- Haz clic en Crear.
- Apigee crea el nuevo proxy y muestra el resumen de los detalles del proxy en el panel Resumen del proxy.
Interfaz clásica
- Ve a la interfaz de usuario de Apigee e inicia sesión.
- Selecciona tu organización en el menú desplegable de la esquina superior izquierda de la interfaz de usuario.
-
Haz clic en Desarrollo > Proxies de APIs para ver la lista de proxies de APIs.
- Haz clic en Crear.
- En el asistente para crear un proxy, selecciona Proxy inverso (el más habitual).
- Configura el proxy de la siguiente manera:
En este campo haz esto Nombre del proxy Introduce: helloworld_apikey
Ruta base del proyecto Cambiar a:
/helloapikey
La ruta base del proyecto forma parte de la URL que se usa para enviar solicitudes al proxy de la API.
Descripción Introduce: hello world protected by API key
Destino (API actual) Introduce:
http://mocktarget.apigee.net
Define la URL de destino que invoca Apigee en una solicitud al proxy de API. Este destino solo devuelve una respuesta sencilla:
Hello, Guest!
. - Haz clic en Siguiente.
- En la página Políticas comunes, selecciona Clave de API. Esta opción añade automáticamente dos políticas a tu proxy de API y crea un producto de API necesario para generar la clave de API.
- Haz clic en Siguiente.
- En la página Resumen, comprueba que se haya seleccionado un entorno de implementación y haz clic en Crear e implementar.
- Haz clic en Editar proxy para mostrar la página de descripción general del proxy de API.
Ver las políticas
Apigee en la consola de Cloud
- En el panel Resumen del proxy del proxy helloworld_apikey, haz clic en la pestaña Desarrollar.
- En el menú Políticas, haga clic en Añadir política.
- En el panel Crear política, en Seguridad, selecciona Verificar clave de API.
- En el panel Verificar clave de API, rellena los campos obligatorios de las secciones Nombre y Nombre visible con los siguientes valores:
- Nombre: introduce un nombre de política. Por ejemplo,
VerifyAPIKey
. - Nombre visible: introduce el nombre de la política que se usará en la interfaz de usuario. Por ejemplo,
Verify API Key
.
- Nombre: introduce un nombre de política. Por ejemplo,
- Haz clic en Crear.
- Haga clic en para añadir otra política.
- En el panel Crear política, en Mediación, selecciona Asignar mensaje.
- En el panel Asignar mensaje, rellena los campos obligatorios de las secciones Nombre y Nombre visible con los siguientes valores:
- Nombre: introduce un nombre de política. Por ejemplo,
AssignMessage
. - Nombre visible: introduce el nombre de la política que se usará en la interfaz de usuario. Por ejemplo,
Assign Message
.
- Nombre: introduce un nombre de política. Por ejemplo,
- Haz clic en Crear.
- El elemento
<APIKey>
del código XML que se muestra a continuación especifica la ubicación de la clave de API en la solicitud entrante. De forma predeterminada, la política obtiene la clave de un parámetro de consulta llamadoapikey
en la solicitud HTTP.<APIKey ref="request.queryparam.apikey" />
El nombre
apikey
es arbitrario y puede ser cualquier propiedad que contenga la clave de API. - Actualiza el contenido de la política Assign Message (Asignar mensaje) de la siguiente manera:
- Añade las políticas
VerifyApiKey
yRemove Query Param apikey
.- En el menú Proxy endpoints (Endpoints de proxy), haz clic en Preflow (Preflow).
- En el panel Solicitud del editor visual, haz clic en Añadir paso de política.
- En el panel Añadir política, selecciona Verificar clave de API.
- Haz clic en Añadir.
- En el panel Solicitud del editor visual, haz clic en Añadir paso de política.
- En el panel Añadir política, seleccione Eliminar parámetro de consulta apikey.
- Haz clic en Añadir.
- Haz clic en Guardar.
- Despliega tu proxy en un entorno:
- Haz clic en Desplegar.
- Seleccione una Revisión y un Entorno.
- Haz clic en Desplegar.
- Para probar los cambios, llama a la API como se describe en Probar la API.
<AssignMessage async="false" continueOnError="false" enabled="true" name="remove-query-param-apikey"> <DisplayName>Remove Query Param apikey</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Interfaz clásica
- En el editor de proxy de API, haz clic en la pestaña Desarrollar. Verás que se han añadido dos políticas al flujo de solicitudes del proxy de API:
- Verificar clave de API: comprueba la llamada a la API para asegurarse de que se ha enviado una clave de API válida (como parámetro de consulta).
- Eliminar el parámetro de consulta apikey: una política Assign Message que elimina la clave de API después de comprobarla para que no se transfiera y se exponga innecesariamente.
-
Haz clic en el icono de la política Verify API Key (Verificar clave de API) en la vista de flujo y consulta la configuración XML de la política en la vista de código inferior. El elemento
<APIKey>
indica a la política dónde debe buscar la clave de API cuando se realiza la llamada. De forma predeterminada, busca la clave como parámetro de consulta llamadoapikey
en la solicitud HTTP:<APIKey ref="request.queryparam.apikey" />
El nombre
apikey
es arbitrario y puede ser cualquier propiedad que contenga la clave de API.
Intentar llamar a la API
En este paso, harás una llamada a la API correcta directamente al servicio de destino y, a continuación, harás una llamada incorrecta al proxy de la API para ver cómo se protege con las políticas.
-
Operación completada
En un navegador web, ve a la siguiente dirección. Este es el servicio de destino al que se ha configurado el proxy de API para reenviar la solicitud, pero por ahora accederás a él directamente:
http://mocktarget.apigee.net
Deberías obtener esta respuesta correcta:
Hello, Guest!
-
Error
Ahora, prueba a llamar a tu proxy de API:
curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey
donde
YOUR ENV_GROUP_HOSTNAME
es el nombre de host del grupo de entornos. Consulta Buscar el nombre de host del grupo de entornos.Sin la política Verify API Key, esta llamada te daría la misma respuesta que la llamada anterior. Sin embargo, en este caso, deberías recibir la siguiente respuesta de error:
{"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
lo que significa, correctamente, que no has proporcionado una clave de API válida (como parámetro de consulta).
En los pasos siguientes, obtendrás la clave de API necesaria.
Añadir un producto de API
Apigee en la consola de Cloud
Para añadir un producto de API mediante la interfaz de usuario de Apigee, sigue estos pasos:
En la Google Cloud consola, ve a la página Distribución > Productos de API:
- Haz clic en + Crear.
- Introduce los detalles del producto de tu producto de API.
Campo Descripción Nombre Nombre interno del producto de API. No especifiques caracteres especiales en el nombre.
Nota: No puedes editar el nombre una vez que se haya creado el producto de la API.Nombre visible Nombre visible del producto de la API. El nombre visible se usa en la interfaz de usuario y puedes editarlo en cualquier momento. Si no se especifica, se usa el valor Name. Este campo se rellena automáticamente con el valor Nombre. Puede editar o eliminar su contenido. El nombre visible puede incluir caracteres especiales. Descripción Descripción del producto de la API. Entorno Entornos a los que permitirá acceder el producto de API. Por ejemplo, test
oprod
.Acceso Selecciona Public (Públicas). Aprobar automáticamente las solicitudes de acceso Habilita la aprobación automática de solicitudes de claves para este producto de API desde cualquier aplicación. Cuota Ignóralo en este tutorial. Permisos de OAuth permitidos Ignóralo en este tutorial. - En la sección Operaciones, haz clic en Añadir una operación.
- En el campo Proxy de API, selecciona el proxy de API que acabas de crear.
- En el campo Ruta, introduzca "/". Ignore los demás campos.
- Haz clic en Guardar para guardar la operación.
- Haz clic en Guardar para guardar el producto de la API.
Para obtener más información sobre cómo añadir un producto de API, consulte el artículo Crear un producto de API.
Interfaz clásica
Para añadir un producto de API mediante la interfaz de usuario de Apigee, sigue estos pasos:
- Selecciona Publicar > Productos de API.
- Haz clic en + Crear.
- Introduce los detalles del producto de API.
Campo Descripción Nombre Nombre interno del producto de API. No especifiques caracteres especiales en el nombre.
Nota: No puedes editar el nombre una vez que se haya creado el producto de la API.Nombre visible Nombre visible del producto de la API. El nombre visible se usa en la interfaz de usuario y puedes editarlo en cualquier momento. Si no se especifica, se usará el valor de Name. Este campo se rellena automáticamente con el valor del nombre. Puede editar o eliminar su contenido. El nombre visible puede incluir caracteres especiales. Descripción Descripción del producto de la API. Entorno Entornos a los que permitirá acceder el producto de API. Por ejemplo, test
oprod
.Acceso Selecciona Public (Públicas). Aprobar automáticamente las solicitudes de acceso Habilita la aprobación automática de solicitudes de claves para este producto de API desde cualquier aplicación. Cuota Ignóralo en este tutorial. Permisos de OAuth permitidos Ignóralo en este tutorial. - En la sección Operaciones, haz clic en AÑADIR UNA OPERACIÓN.
- En el campo Proxy de API, selecciona el proxy de API que acabas de crear.
- En el campo Ruta, introduce "/". Ignora los demás campos.
- Haz clic en Guardar para guardar la operación.
- Haz clic en Guardar para guardar el producto de la API.
Añadir un desarrollador y una aplicación a tu organización
A continuación, vamos a simular el flujo de trabajo de un desarrollador que se registra para usar tus APIs. Un desarrollador tendrá una o varias aplicaciones que llamen a tus APIs, y cada aplicación obtendrá una clave de API única. De esta forma, tú, como proveedor de APIs, tendrás un control más detallado sobre el acceso a tus APIs y podrás generar informes más detallados sobre el tráfico de las APIs por aplicación.
Crear un desarrollador
Apigee en la consola de Cloud
Para crear un desarrollador, sigue estos pasos:
-
En la Google Cloud consola, ve a la página Distribución > Desarrolladores:
- Haz clic en + Crear.
- En la ventana Añadir desarrollador, introduce lo siguiente:
Campo Valor Nombre Keyser
Apellidos Soze
Correo electrónico keyser@example.com
Username (Nombre de usuario) keyser
- Haz clic en Añadir.
Para obtener más información sobre cómo crear un desarrollador, consulta el artículo Registrar desarrolladores de aplicaciones.
Interfaz clásica
Para crear un desarrollador, sigue estos pasos:
- En el menú, seleccione Publicar > Desarrolladores.
Nota: Si sigues en la pantalla Desarrollo, haz clic en el icono "<" situado junto a DESARROLLO para mostrar el menú y selecciona Publicar > Desarrolladores. - Haz clic en + Desarrollador.
- En la ventana Nuevo desarrollador, introduce lo siguiente:
En este campo intro Nombre Keyser
Apellidos Soze
Username (Nombre de usuario) keyser
Correo electrónico keyser@example.com
- Haz clic en Crear.
Registrar una aplicación
Apigee en la consola de Cloud
-
En la Google Cloud consola, ve a la página Distribución > Aplicaciones:
- Haz clic en + Crear.
- Introduce lo siguiente en la ventana Create App (Crear aplicación):
Campo Valor Nombre de la aplicación Introduce: keyser_app
Nombre visible Introduce: keyser_app
Desarrolladores Seleccionar: Keyser Soze (keyser@example.com)
URL de retrollamada Dejar en blanco Notas Dejar en blanco - En la sección Credenciales, haz clic en Añadir credencial.
- Selecciona Nunca. Las credenciales de esta aplicación no caducarán nunca.
- Haga clic en Añadir productos.
- Selecciona el producto que acabas de crear.
- Haz clic en Añadir.
- Haz clic en Crear.
Para obtener más información sobre cómo registrar una aplicación, consulta el artículo Registrar una aplicación.
Interfaz clásica
Para registrar una aplicación de desarrollador, sigue estos pasos:
- Selecciona Publicar > Aplicaciones.
- Haz clic en + Aplicación.
- En la ventana Nueva aplicación de desarrollador, introduce lo siguiente:
Campo Valor Nombre y Nombre visible Introduce: keyser_app
Desarrolladores Seleccionar: Keyser Soze (keyser@example.com)
URL de retrollamada y Notas Dejar en blanco - En la sección Credenciales, selecciona Nunca. Las credenciales de esta aplicación no caducarán nunca.
- Haga clic en Añadir producto.
- Selecciona el producto que acabas de crear.
- Haz clic en Crear.
Obtener la clave de API
Apigee en la consola de Cloud
Para obtener la clave de API, sigue estos pasos:
En la consola Google Cloud , ve a la página Distribución > Aplicaciones.
- Selecciona la aplicación que quieras de la lista.
- En la página Ver aplicación, en Credenciales, haz clic en junto al campo Clave. Ten en cuenta que la clave está asociada al producto que has creado.
- Haz clic en Copiar. Usarás esta clave en el siguiente paso.
Interfaz clásica
Para obtener la clave de API, sigue estos pasos:
- En la página Aplicaciones (Publicar > Aplicaciones), haz clic en keyser_app.
- En la página keyser_app, haz clic en Mostrar junto a Clave en la sección Credenciales. Verá que la clave está asociada al producto que ha creado.
- Selecciona y copia la clave. Lo usarás en el siguiente paso.
Llamar a la API con una clave
Ahora que tienes una clave de API, puedes usarla para llamar al proxy de API. Pega la clave de API como se muestra, como parámetro de consulta. Asegúrate de que no haya espacios adicionales en el parámetro de consulta.
curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=YOUR_API_KEY
Ahora, cuando llames al proxy de API, deberías obtener esta respuesta: Hello,
Guest!
¡Enhorabuena! Has creado un proxy de API y lo has protegido exigiendo que se incluya una clave de API válida en la llamada.
Ten en cuenta que, por lo general, no es recomendable enviar una clave de API como parámetro de consulta. Te recomendamos que lo incluyas en el encabezado HTTP.
Práctica recomendada: pasar la clave en el encabezado HTTP
En este paso, modificará el proxy para que busque la clave de API en un encabezado llamado x-apikey
.
Apigee en la consola de Cloud
- En la Google Cloud consola, ve a la página Desarrollo de proxy > Proxies de API.
- Selecciona el proxy necesario en la lista de proxies.
- En la página Detalles del proxy, haz clic en Desarrollar.
- Modifica el XML de la política para que busque en el encabezado en lugar de en el parámetro de consulta:
- Haz clic en Guardar para guardar los cambios.
- Haz clic en Desplegar.
- Seleccione una Revisión y un Entorno.
- Haz clic en Desplegar.
-
Haz la siguiente llamada a la API con cURL para enviar la clave de API como un encabezado llamado
x-apikey
. No olvides sustituir el nombre de tu organización.curl -v -H "x-apikey: YOUR_API_KEY" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey
<APIKey ref="request.header.x-apikey"/>
Ten en cuenta que, para completar el cambio, también deberás configurar la política Asignar mensaje para que elimine el encabezado en lugar del parámetro de consulta. Por ejemplo:
<Remove> <Headers> <Header name="x-apikey"/> </Headers> </Remove>
Interfaz clásica
- Edita el proxy de API. Selecciona Desarrollar > Proxies de API > helloworld_apikey y ve a la vista Desarrollar.
-
Seleccione la política Verificar clave de API y modifique el XML de la política para indicarle que busque en
header
en lugar de enqueryparam
:<APIKey ref="request.header.x-apikey"/>
- Guarda el proxy de API y usa Desplegar para desplegarlo.
-
Haz la siguiente llamada a la API con cURL para enviar la clave de API como un encabezado llamado
x-apikey
. No olvides sustituir el nombre de tu organización.curl -v -H "x-apikey: {api_key_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey
Ten en cuenta que, para completar el cambio, también deberás configurar la política Asignar mensaje para que elimine el encabezado en lugar del parámetro de consulta. Por ejemplo:
<Remove> <Headers> <Header name="x-apikey"/> </Headers> </Remove>
Temas relacionados
Estos son algunos temas relacionados con los productos y las claves de API:
- Gestionar productos de API
- Claves de API
- Registrar desarrolladores de aplicaciones
- Registrar aplicaciones y gestionar claves de API
- Política Verify API Key
La protección de APIs suele implicar medidas de seguridad adicionales, como OAuth, un protocolo abierto que intercambia credenciales (como el nombre de usuario y la contraseña) por tokens de acceso. Los tokens de acceso son cadenas largas y aleatorias que se pueden transferir a través de una canalización de mensajes, incluso de una aplicación a otra, sin poner en riesgo las credenciales originales.
Para obtener una visión general de los temas relacionados con la seguridad, consulta Proteger un proxy.