Protege una API mediante la solicitud de claves de API

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Qué aprenderás

En este instructivo, aprenderás a realizar lo siguiente:

  • Cómo crear un proxy de API que requiera una clave de API.
  • Agrega un producto de API.
  • Agrega un desarrollador y registra una app.
  • Cómo llamar a tu API con una clave de API.

Es importante proteger tu API del acceso no autorizado. Una forma de hacerlo con las claves de API (también llamadas claves públicas, las claves del consumidor) claves o claves de aplicaciones).

Cuando una app realiza una solicitud a tu API, la app debe proporcionar una clave válida. En el tiempo de ejecución, la política Verificar clave de API comprueba que la clave de API proporcionada:

  • Es válida.
  • No se revocó.
  • Hace coincidir la clave de API para el producto de API que expone la API solicitada recursos

Si la clave es válida, se permite la solicitud. Si la clave no es válida, solicitud genera un error de autorización.

En este instructivo, crearás un proxy de API que requiera una API válida para acceder a ella.

Requisitos

  • Una cuenta de Apigee Edge Si aún no tienes una, puedes registrarte con las instrucciones en Cómo crear una cuenta de Apigee Edge
  • Un navegador web para realizar una llamada a la API
  • (No se requiere para la sección de crédito adicional) cURL instalado en tu máquina para realizar llamadas a la API desde la línea de comandos.

Crea el proxy de API

Acerca del destino ficticio

El servicio mocktarget se aloja en Apigee y muestra resultados de datos no estructurados. No requiere una clave de API ni un token de acceso. De hecho, puedes acceder a ella en un navegador web. Haz clic en los siguientes vínculos para probarlo:

http://mocktarget.apigee.net

El destino muestra Hello, Guest!. Usa el /help para obtener una página de ayuda de otros recursos de API disponibles

  1. Ir a https://apigee.com/edge y acceder.
  2. Para cambiar a la organización que deseas, haz clic en tu nombre de usuario en la parte superior de la barra de navegación lateral para mostrar el menú de perfil del usuario y, luego, seleccionando la organización de la lista.

    seleccionar org en el menú del perfil del usuario
  3. Haga clic en Proxies de API en la página de destino para mostrar la API. en la lista de proxies.

    Menú de las APIs de Edge
  4. Haz clic en + Proxy.
    Botón para Crear proxy
  5. En la página Crear proxy, selecciona Proxy inverso (más común).
  6. En la página Proxy Details, configura el proxy de la siguiente manera:
    En este campo haz lo siguiente Sigue estas recomendaciones
    Proxy name Ingresa: helloworld_apikey
    Ruta de acceso base del proyecto

    Cambia a: /helloapikey

    La ruta base del proyecto es parte de la URL que se usa para al proxy de API.

    Nota: Para las recomendaciones de Apigee sobre el control de versiones de la API, consulta Control de versiones en Web API Design: The Missing Vincular al libro electrónico.

    Existing API

    Ingresa: http://mocktarget.apigee.net

    Esto define la URL de destino que invoca Apigee Edge en un al proxy de API.

    Descripción Ingresa: hello world protected by API key
  7. Haz clic en Siguiente.
  8. En la página Políticas comunes, para Seguridad: Autorización, selecciona Clave de API y, luego, haz clic en Siguiente. Esta agregará dos políticas a tu proxy de API.
  9. En la página Virtual Hosts, selecciona default y secure y haga clic en Next. Si seleccionas predeterminada, te permitirá llamar a tu API con http://. Si seleccionas Seguridad, te permite llamar a tu API con https://.
  10. En la página Summary, asegúrate de que la implementación test y, luego, haz clic en Crear e implementar.
  11. Verás la confirmación de que tu nuevo proxy de API y una producto se crearon correctamente y que el proxy de API se implementó en tu entorno de pruebas.
  12. Haz clic en Edit proxy para ver la página Overview de proxy de API.

Visualiza las políticas

  1. En el editor de proxy de API haga clic en la pestaña Desarrollar. Verás que se agregaron 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 haya Hay una clave de API presente (enviada como un parámetro de consulta).
    • Quita apikey del parámetro de consulta: Es una política deAssignMessage que quita la clave de API después de verificarla para que no se apruebe alrededor y expuestos de forma innecesaria.
  2. Haz clic en el ícono Verify API Key policy en la vista de flujo y observa la configuración XML de la política en la vista de código inferior. El El elemento <APIKey> le indica a la política dónde debe buscar la clave de API cuando se realice la llamada. De forma predeterminada, busca como un parámetro de consulta llamado apikey en la solicitud:

    <APIKey ref="request.queryparam.apikey" />
    

    El nombre apikey es arbitrario y puede ser cualquier propiedad que contiene la clave de API.

Intenta llamar a la API

En este paso, realizarás una llamada a la API exitosa directamente en el destino después, realizarás una llamada incorrecta al proxy de API para ver cómo están protegidos por las políticas.

  1. Listo

    En un navegador web, ve a la siguiente dirección. Este es el servicio de destino que el proxy de API está configurado para reenviar a la solicitud, pero por ahora lo accederás directamente:

    http://mocktarget.apigee.net
    

    Deberías obtener la respuesta correcta: Hello, Guest!

  2. Falla

    Ahora, intenta llamar a tu proxy de API:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    y reemplaza ORG_NAME por el nombre de tu Organización perimetral.

    Sin la política Verificar clave de API, esta llamada daría lo mismo que en la llamada anterior. Pero, en este caso, deberías obtener siguiente respuesta de error:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    lo que significa que no pasaste una clave de API válida (como un parámetro de consulta).

En los próximos pasos, agregarás un producto de API.

Agrega un producto de API

Para agregar un producto de API mediante la IU de Apigee, sigue estos pasos:

  1. Selecciona Publicar > Productos de API.
  2. Haz clic en +API Product.
  3. En Product details, ingresa tu producto de API.

    Campo Descripción
    Name Nombre interno del producto de API. Qué no debes hacer especificar caracteres especiales en el nombre.
    Nota: Tú no puede editar el nombre una vez que se crea el producto de API. Para por ejemplo, helloworld_apikey-Product.
    Nombre visible Nombre visible del producto de API. El nombre visible se usa en la IU y puedes editarla en cualquier momento. Si no se especifica, el Se usará el valor del nombre. Este campo se completa automáticamente con el Valor de nombre; puedes editar o borrar su contenido. La pantalla el nombre puede incluir caracteres especiales. Por ejemplo: helloworld_apikey-Product
    Descripción Descripción del producto de API. Por ejemplo, Test product for tutorial.
    Entorno Entornos a los que el producto de API permitirá el acceso Por ejemplo, test o prod.
    Acceder Selecciona Público.
    Aprueba de manera automática las solicitudes de acceso Habilitar la aprobación automática de las solicitudes de claves para esta API producto desde cualquier app.
    Cuota Ignora este instructivo.
    Permisos de OAuth permitidos Ignora este instructivo.
  4. En la sección API resources, seleccione el proxy de API que acaba de crear. Por ejemplo, helloworld_apikey.
  5. Haz clic en Agregar.
  6. En la sección Rutas de acceso, agrega la ruta "/".
  7. Haz clic en Agregar.
  8. Haz clic en Guardar.

En los próximos pasos, obtendrás la clave de API necesaria.

Agrega un desarrollador y una app a tu organización

A continuación, simularemos el flujo de trabajo de un desarrollador que se registra para usar tus APIs. Un desarrollador tendrá una o más apps que llamen a tus APIs, y cada app recibe una clave de API única. Esto te brinda, el proveedor de API, más control detallado sobre el acceso a sus APIs e informes más detallados sobre Tráfico de API por app

Cree un desarrollador

Para crear un desarrollador, haz lo siguiente:

  1. Selecciona Publicar > Desarrolladores en el menú.
  2. Haz clic en + Desarrollador.
  3. En la ventana New Developer, ingrese lo siguiente:

    En este campo haz lo siguiente ingresar
    Nombre Keyser
    Apellido Soze
    Nombre de usuario keyser
    Correo electrónico keyser@example.com
  4. Haga clic en Crear.

Registra una aplicación

Para registrar una app de desarrollador, sigue estos pasos:

  1. Selecciona Publicar > Apps.
  2. Haga clic en + Aplicación.
  3. Ingresa lo siguiente en la ventana New App:

    p
    En este campo haz lo siguiente Sigue estas recomendaciones
    Nombre y Nombre visible Ingresa: keyser_app
    Empresa/Programador Selecciona: Developer
    Desarrollador Selecciona: Keyser Soze (keyser@example.com)
    URL de devolución de llamada y Notas Déjelo en blanco
  4. En la sección Credenciales, selecciona Nunca en la Menú Vencimiento. Las credenciales para esta app no expirarán nunca.
  5. En Productos, haz clic en Agregar producto.
  6. Selecciona helloworld_apikey-Product.
  7. Haz clic en Agregar.
  8. Haz clic en Crear arriba y a la derecha de Detalles de la app. para guardar tu trabajo.

Obtenga la clave de API

Para obtener la clave de API, sigue estos pasos:

  1. En la página Apps (Publish > Apps), haz clic en keyser_app.
  2. En la página keyser_app, haz clic en Mostrar junto a Clave. en la sección Credenciales. En la sección Producto, ten en cuenta que la clave está asociada con helloworld_apikey

    de Google Cloud.
  3. Selecciona y copia la Clave. La necesitarás en el próximo paso.

Llama a la API con una clave

Ahora que tienes una clave de API, puede usarla para llamar al proxy de API. Ingresar lo siguiente en tu navegador web. Sustituye el nombre de tu organización de Edge para ORG_NAME y la clave de API para API_KEY a continuación. Asegúrate de que no haya espacios adicionales en el parámetro de consulta.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Ahora, cuando llames al proxy de API, deberías obtener esta respuesta: Hello, Guest!

¡Felicitaciones! Creaste un proxy de API y lo protegiste mediante Solicitar que se incluya una clave de API válida en la llamada.

Ten en cuenta que, en general, no se recomienda pasar una clave de API como parámetro de consulta. Debes tener en cuenta y pasarlo en el encabezado HTTP.

Práctica recomendada: Pasa la clave en el encabezado HTTP

En este paso, modificarás el proxy para buscar la clave de API en una llamado x-apikey.

  1. Edita el proxy de la API. Selecciona Desarrollo > Proxies de API > helloworld_apikey y ve a la vista Desarrollo.
  2. Selecciona la política Verify API Key y modifica el XML de la política para indicarlo. la política se debe buscar en header, en lugar de en el queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Guarda el proxy de API para implementar el cambio.
  4. Realiza la siguiente llamada a la API usando cURL para pasar la clave de API como una llamado x-apikey. No olvides sustituir tu nombre de la organización.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Ten en cuenta que, para completar el cambio, también necesitarás configurar el La políticaAssignMessage para quitar el encabezado en lugar del parámetro de consulta Por ejemplo:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

Temas relacionados

Aquí hay algunos temas que se relacionan directamente con este instructivo:

Profundizar un poco más y proteger las API con claves de API es solo una parte de la historia. A menudo, La protección de las APIs implica seguridad adicional, como OAuth.

OAuth es una protocolo abierto que, en pocas palabras, intercambia credenciales (como el nombre de usuario y la contraseña) para los tokens de acceso. Los tokens de acceso son cadenas largas y aleatorias que se pueden pasar alrededor de un mensaje de Google Cloud, incluso de una app a otra, sin comprometer las credenciales originales. Acceso los tokens suelen tener vidas cortas, por lo que siempre se generan nuevos.