Referencia de operación y configuración de Edge Microgateway

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

Edge Microgateway v. 3.3.x

En este tema, se explica cómo administrar y configurar la Microgateway de Edge.

Actualiza Edge Microgateway si tienes conexión a Internet

En esta sección, se explica cómo actualizar una instalación existente de Edge Microgateway. Si no tienes conexión a Internet, consulta ¿Puedo instalar la micropuerta de enlace de Edge sin conexión a Internet?.

Apigee recomienda que pruebes tu configuración existente con la versión nueva antes de actualizar tu entorno de producción.

  1. Ejecuta el siguiente comando npm para actualizar a la versión más reciente de Edge Microgateway:
    npm upgrade edgemicro -g

    Para instalar una versión específica de Edge Microgateway, debes especificar el número de versión en el comando de instalación. Por ejemplo, para instalar la versión 3.2.3, usa el siguiente comando:

    npm install edgemicro@3.2.3 -g
  2. Verifica el número de versión. Por ejemplo, si instalaste la versión 3.2.3, haz lo siguiente:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.2.3
        
  3. Por último, actualiza a la versión más reciente del proxy edgemicro-auth:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

Cómo realizar cambios en la configuración

Estos son los archivos de configuración que debes conocer:

  • Archivo de configuración del sistema predeterminado
  • Archivo de configuración predeterminado para una instancia de Edge Microgateway inicializada recientemente
  • Archivo de configuración dinámico para ejecutar instancias

En esta sección, se analizan estos archivos y lo que debes saber para cambiarlos.

Archivo de configuración predeterminada del sistema

Cuando instalas Edge Microgateway, se coloca un archivo de configuración del sistema predeterminado aquí:

prefix/lib/node_modules/edgemicro/config/default.yaml

En el que prefix es el directorio del prefijo npm. Consulta dónde se instala Edge Microgateway si no puedes encontrar este directorio.

Si cambias el archivo de configuración del sistema, debes reiniciar, volver a configurar y reiniciar la puerta de enlace de microservicios de Edge:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

Archivo de configuración predeterminado para instancias de Edge Microgateway inicializadas recientemente

Cuando ejecutas edgemicro init, el archivo de configuración del sistema (descritp o anteriormente), default.yaml, se coloca en el directorio ~/.edgemicro.

Si cambias el archivo de configuración en ~/.edgemicro, debes volver a configurar y reiniciar la Microgateway de Edge:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

Archivo de configuración dinámico para ejecutar instancias

Cuando ejecutas edgemicro configure [params], se crea un archivo de configuración dinámico en ~/.edgemicro. El archivo se nombra según este patrón: org-env-config.yaml, en el que org y env son los nombres de tu organización y entorno de Apigee Edge. Puedes usar este archivo para realizar cambios de configuración y, luego, volver a cargarlos sin tiempo de inactividad. Por ejemplo, si agregas y configuras un complemento, puedes volver a cargar la configuración sin incurrir en ningún tiempo de inactividad, como se explica a continuación.

Si Edge Microgateway se está ejecutando (opción de tiempo de inactividad cero):

  1. Vuelve a cargar la configuración de Edge Microgateway:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    Donde:

    • $ORG es el nombre de tu organización de Edge (debes ser un administrador de la organización).
    • $ENV es un entorno de tu organización (como “prueba” o “prod”).
    • $KEY es la clave que mostró anteriormente el comando configure.
    • $SECRET es la clave que mostró anteriormente el comando configure.

    Por ejemplo:

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

Si Edge Microgateway se detiene, haz lo siguiente:

  1. Reinicia Edge Microgateway:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Donde:

    • $ORG es el nombre de tu organización de Edge (debes ser un administrador de la organización).
    • $ENV es un entorno de tu organización (como “prueba” o “prod”).
    • $KEY es la clave que mostró anteriormente el comando configure.
    • $SECRET es la clave que mostró anteriormente el comando configure.

    Por ejemplo:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

Este es un ejemplo de archivo de configuración. Para obtener detalles sobre la configuración del archivo de configuración, consulta la referencia de configuración de Edge Microgateway.

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

Configura variables de entorno

Los comandos de la interfaz de línea de comandos que requieren valores para tu organización y entorno de Edge, y la clave y el secreto necesarios para iniciar la Microgateway de Edge, se pueden almacenar en estas variables de entorno:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

Establecer estas variables es opcional. Si los configuras, no tienes que especificar sus valores cuando uses la interfaz de línea de comandos (CLI) para configurar y, luego, iniciar la Microgateway de Edge.

Cómo configurar SSL en el servidor de la micropuerta de enlace de Edge

Mira los siguientes videos para obtener información sobre la configuración de TLS en la micropuerta de enlace de Apigee Edge:

Video Descripción
Configura TLS unidireccional orientado al norte Obtén información para configurar TLS en la micropuerta de enlace de Apigee Edge. En este video, se proporciona una descripción general de TLS y su importancia, se presenta TLS en la micropuerta de enlace de Edge y se muestra cómo configurar TLS unidireccional hacia el norte.
Configura TLS de 2 vías hacia el norte Este es el segundo video sobre la configuración de TLS en Apigee Edge Microgateway. En este video, se explica cómo configurar TLS de 2 vías hacia el norte.
Configura TLS de salida unidireccional y bidireccional En este tercer video sobre la configuración de TLS en la micropuerta de enlace de Apigee Edge, se explica cómo configurar TLS unidireccional y bidireccional descendente.

Puedes configurar el servidor de Microgateway para que use SSL. Por ejemplo, con SSL configurado, puedes llamar a las APIs a través de la micropuerta de enlace de Edge con el protocolo “https”, de la siguiente manera:

https://localhost:8000/myapi

Para configurar SSL en el servidor de Microgateway, sigue estos pasos:

  1. Genera o obtén un certificado SSL y una clave con la utilidad openssl o el método que prefieras.
  2. Agrega el atributo edgemicro:ssl al archivo de configuración de Edge Microgateway. Para obtener una lista completa de las opciones, consulta la siguiente tabla. Por ejemplo:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. Reinicia Edge Microgateway. Sigue los pasos que se describen en Cómo realizar cambios de configuración según el archivo de configuración que hayas editado: el archivo predeterminado o el archivo de configuración del entorno de ejecución.

Este es un ejemplo de la sección edgemicro del archivo de configuración, con SSL configurado:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

Esta es una lista de todas las opciones de servidor compatibles:

Opción Descripción
key Es la ruta de acceso a un archivo ca.key (en formato PEM).
cert Es la ruta de acceso a un archivo ca.cert (en formato PEM).
pfx Es la ruta de acceso a un archivo pfx que contiene la clave privada, el certificado y los certificados de AC del cliente en formato PFX.
passphrase Es una cadena que contiene la frase de contraseña de la clave privada o el PFX.
ca Es la ruta de acceso a un archivo que contiene una lista de certificados de confianza en formato PEM.
ciphers Es una cadena que describe los algoritmos de cifrado que se usarán separados por un ":".
rejectUnauthorized Si es verdadero, el certificado del servidor se verifica en función de la lista de AC proporcionadas. Si la verificación falla, se muestra un error.
secureProtocol El método SSL que se usará. Por ejemplo, SSLv3_method para forzar SSL a la versión 3.
servername Es el nombre del servidor de la extensión TLS SNI (indicación de nombre de servidor).
requestCert Es verdadero para SSL de 2 vías y falso para SSL de 1 vía.

Cómo usar las opciones de SSL/TLS del cliente

Puedes configurar Edge Microgateway como un cliente TLS o SSL cuando te conectes a los extremos de destino. En el archivo de configuración de Microgateway, usa el elemento targets para establecer opciones de SSL/TLS. Ten en cuenta que puedes especificar varios objetivos específicos. A continuación, se incluye un ejemplo de varios objetivos.

En este ejemplo, se proporciona la configuración que se aplicará a todos los hosts:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

En este ejemplo, la configuración se aplica solo al host especificado:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

Este es un ejemplo de TLS:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

En el caso de que desees aplicar la configuración de TLS/SSL a varios destinos específicos, debes especificar el primer host en la configuración como "vacío", lo que habilita las solicitudes universales y, luego, especificar hosts específicos en cualquier orden. En este ejemplo, la configuración se aplica a varios hosts específicos:

targets:
 - host:   ## Note that this value must be "empty"
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true
 - host: 'myserver1.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true
 - host: 'myserver2.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true

Esta es una lista de todas las opciones de cliente compatibles:

Opción Descripción
pfx Es la ruta de acceso a un archivo pfx que contiene la clave privada, el certificado y los certificados de AC del cliente en formato PFX.
key Es la ruta de acceso a un archivo ca.key (en formato PEM).
passphrase Es una cadena que contiene la frase de contraseña de la clave privada o el PFX.
cert Es la ruta de acceso a un archivo ca.cert (en formato PEM).
ca Es la ruta de acceso a un archivo que contiene una lista de certificados de confianza en formato PEM.
ciphers Es una cadena que describe los algoritmos de cifrado que se usarán separados por un ":".
rejectUnauthorized Si es verdadero, el certificado del servidor se verifica en función de la lista de AC proporcionadas. Si la verificación falla, se muestra un error.
secureProtocol El método SSL que se usará. Por ejemplo, SSLv3_method para forzar SSL a la versión 3.
servername Es el nombre del servidor de la extensión TLS SNI (indicación de nombre de servidor).

Personaliza el proxy de edgemicro-auth

De forma predeterminada, Edge Microgateway usa un proxy implementado en Apigee Edge para la autenticación de OAuth2. Este proxy se implementa cuando ejecutas edgemicro configure por primera vez. Puedes cambiar la configuración predeterminada de este proxy para agregar compatibilidad con reclamos personalizados a un token web JSON (JWT), configurar el vencimiento de los tokens y generar tokens de actualización. Para obtener más detalles, consulta la página edgemicro-auth en GitHub.

Usa un servicio de autenticación personalizado

De forma predeterminada, Edge Microgateway usa un proxy implementado en Apigee Edge para la autenticación de OAuth2. Este proxy se implementa cuando ejecutas edgemicro configure por primera vez. De forma predeterminada, la URL de este proxy se especifica en el archivo de configuración de la micropuerta de enlace de Edge de la siguiente manera:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

Si deseas usar tu propio servicio personalizado para controlar la autenticación, cambia el valor authUri en el archivo de configuración para que apunte a tu servicio. Por ejemplo, puedes tener un servicio que use LDAP para verificar la identidad.

Administra archivos de registro

Edge Microgateway registra información sobre cada solicitud y respuesta. Los archivos de registro proporcionan información útil para depurar y solucionar problemas.

Dónde se almacenan los archivos de registro

De forma predeterminada, los archivos de registro se almacenan en /var/tmp.

Cómo cambiar el directorio de archivos de registro predeterminado

El directorio en el que se almacenan los archivos de registro se especifica en el archivo de configuración de Edge Microgateway. Consulta también Cómo realizar cambios en la configuración.

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Cambia el valor de dir para especificar un directorio de archivos de registro diferente.

Cómo enviar registros a la consola

Puedes configurar el registro para que la información del registro se envíe a la salida estándar en lugar de a un archivo de registro. Establece la marca to_console como verdadera de la siguiente manera:

edgemicro:
  logging:
    to_console: true

Con este parámetro de configuración, los registros se enviarán a la salida estándar. Actualmente, no puedes enviar registros a la salida estándar ni a un archivo de registro.

Cómo configurar el nivel de registro

Especifica el nivel de registro que se usará en la configuración de edgemicro. Para obtener una lista completa de los niveles de registro y sus descripciones, consulta Atributos de edgemicro.

Por ejemplo, la siguiente configuración establece el nivel de registro en debug:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: debug
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Cómo cambiar los intervalos de registro

Puedes configurar estos intervalos en el archivo de configuración de Edge Microgateway. Consulta también Cómo cambiar la configuración.

Los atributos configurables son los siguientes:

  • stats_log_interval: (predeterminado: 60) Es el intervalo, en segundos, en el que se escribe el registro de estadísticas en el archivo de registro de la API.
  • rotate_interval: (predeterminado: 24) Es el intervalo, en horas, en el que se rotan los archivos de registro. Por ejemplo:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Cómo relajar los permisos estrictos de los archivos de registro

De forma predeterminada, Edge Microgateway genera el archivo de registro de la aplicación (api-log.log) con el nivel de permiso de archivo establecido en 0600. Este nivel de permiso no permite que aplicaciones o usuarios externos lean el archivo de registro. Para relajar este nivel de permiso estricto, establece logging:disableStrictLogFile en true. Cuando este atributo es true, el archivo de registro se crea con el permiso de archivo establecido en 0755. Si es false o si no se proporciona el atributo, el permiso predeterminado es 0600.

Se agregó en la versión 3.2.3.

Por ejemplo:

edgemicro:
 logging:
   disableStrictLogFile: true

Buenas prácticas de mantenimiento de archivos de registro

A medida que los datos de los archivos de registro se acumulan con el tiempo, Apigee recomienda que adoptes las siguientes prácticas:

Convención de nombres de archivos de registro

Cada instancia de la micropuerta de enlace de Edge produce un archivo de registro con una extensión .log. La convención de nombres para los archivos de registro es la siguiente:

edgemicro-HOST_NAME-INSTANCE_ID-api.log

Por ejemplo:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

Información sobre el contenido de los archivos de registro

Se agregó en la versión 2.3.3

De forma predeterminada, el servicio de registro omite el JSON de los proxies, los productos y el token web JSON (JWT) descargados. Si deseas enviar estos objetos a la consola, establece la marca de línea de comandos DEBUG=* cuando inicies la Microgateway de Edge. Por ejemplo:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

Contenido del archivo de registro "api"

El archivo de registro "api" contiene información detallada sobre el flujo de solicitudes y respuestas a través de Edge Microgateway. Los archivos de registro "api" se nombran de la siguiente manera:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

Para cada solicitud que se realiza a Edge Microgateway, se capturan cuatro eventos en el archivo de registro "api":

  • Solicitud entrante del cliente
  • Se realizó una solicitud saliente al destino
  • Respuesta entrante del objetivo
  • Respuesta saliente al cliente

Cada una de estas entradas separadas se representa en una notación abreviada para ayudar a que los archivos de registro sean más compactos. Estos son cuatro ejemplos de entradas que representan cada uno de los cuatro eventos. En el archivo de registro, se ven de la siguiente manera (los números de línea son solo para referencia en el documento, no aparecen en el archivo de registro).

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

Analicemos cada una de ellas:

1. Ejemplo de solicitud entrante del cliente:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651: Marca de fecha de Unix
  • info: Es el nivel de registro. Este valor depende del contexto de la transacción y del nivel de registro establecido en la configuración de edgemicro. Consulta Cómo configurar el nivel de registro. Para los registros de estadísticas, el nivel se establece en stats. Los registros de estadísticas se informan en un intervalo regular establecido con la configuración de stats_log_interval. Consulta también Cómo cambiar los intervalos de registro.
  • req: Identifica el evento. En este caso, solicítalo al cliente.
  • m: Es el verbo HTTP que se usa en la solicitud.
  • u: Es la parte de la URL que sigue a la ruta de acceso base.
  • h: Es el host y el número de puerto en los que escucha Edge Microgateway.
  • r: Es el host y el puerto remotos en los que se originó la solicitud del cliente.
  • i: Es el ID de la solicitud. Las cuatro entradas de eventos compartirán este ID. A cada solicitud se le asigna un ID de solicitud único. La correlación de los registros de registro por ID de solicitud puede brindar estadísticas valiosas sobre la latencia del objetivo.
  • d: Es la duración en milisegundos desde que Edge Microgateway recibió la solicitud. En el ejemplo anterior, la respuesta del destino para la solicitud 0 se recibió después de 7 milisegundos (línea 3) y se envió al cliente después de 4 milisegundos adicionales (línea 4). En otras palabras, la latencia total de la solicitud fue de 11 milisegundos, de los cuales 7 milisegundos se tomaron en el destino y 4 milisegundos en la propia Microgateway de Edge.

2. Ejemplo de solicitud saliente que se realiza al destino:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651: Marca de fecha de Unix
  • info: Es el nivel de registro. Este valor depende del contexto de la transacción y del nivel de registro establecido en la configuración de edgemicro. Consulta Cómo configurar el nivel de registro. Para los registros de estadísticas, el nivel se establece en stats. Los registros de estadísticas se informan en un intervalo regular establecido con la configuración de stats_log_interval. Consulta también Cómo cambiar los intervalos de registro.
  • treq: Identifica el evento. En este caso, la solicitud de destino.
  • m: Es el verbo HTTP que se usa en la solicitud de destino.
  • u: Es la parte de la URL que sigue a la ruta de acceso base.
  • h: Es el host y el número de puerto del destino de backend.
  • i: Es el ID de la entrada de registro. Las cuatro entradas de eventos compartirán este ID.

3. Ejemplo de respuesta entrante del objetivo

1436403888672 info tres s=200, d=7, i=0

1436403888651: Marca de fecha de Unix

  • info: Es el nivel de registro. Este valor depende del contexto de la transacción y del nivel de registro establecido en la configuración de edgemicro. Consulta Cómo configurar el nivel de registro. Para los registros de estadísticas, el nivel se establece en stats. Los registros de estadísticas se informan en un intervalo regular establecido con la configuración de stats_log_interval. Consulta también Cómo cambiar los intervalos de registro.
  • tres: Identifica el evento. En este caso, la respuesta objetivo.
  • s: Es el estado de la respuesta HTTP.
  • d: Es la duración en milisegundos. Es el tiempo que tarda el destino en realizar la llamada a la API.
  • i: Es el ID de la entrada de registro. Las cuatro entradas de eventos compartirán este ID.

4. Ejemplo de respuesta saliente al cliente

1436403888676 info res s=200, d=11, i=0

1436403888651: Marca de fecha de Unix

  • info: Es el nivel de registro. Este valor depende del contexto de la transacción y del nivel de registro establecido en la configuración de edgemicro. Consulta Cómo configurar el nivel de registro. Para los registros de estadísticas, el nivel se establece en stats. Los registros de estadísticas se informan en un intervalo regular establecido con la configuración de stats_log_interval. Consulta también Cómo cambiar los intervalos de registro.
  • res: Identifica el evento. En este caso, la respuesta al cliente.
  • s: Es el estado de la respuesta HTTP.
  • d: Es la duración en milisegundos. Este es el tiempo total que tarda la llamada a la API, incluido el tiempo que tarda la API de destino y el tiempo que tarda la propia Microgateway de Edge.
  • i: Es el ID de la entrada de registro. Las cuatro entradas de eventos compartirán este ID.

Programación de archivos de registro

Los archivos de registro se rotan en el intervalo especificado por el atributo de configuración rotate_interval. Las entradas se seguirán agregando al mismo archivo de registro hasta que venza el intervalo de rotación. Sin embargo, cada vez que se reinicia la Microgateway de Edge, recibe un UID nuevo y crea un nuevo conjunto de archivos de registro con este UID. Consulta también Prácticas recomendadas para el mantenimiento de archivos de registro.

Mensajes de error

Algunas entradas de registro contendrán mensajes de error. Para identificar dónde y por qué se producen los errores, consulta la referencia de errores de Edge Microgateway.

Referencia de configuración de Edge Microgateway

Ubicación del archivo de configuración

Los atributos de configuración que se describen en esta sección se encuentran en el archivo de configuración de Edge Microgateway. Consulta también Cómo realizar cambios en la configuración.

Atributos edge_config

Estos parámetros de configuración se usan para configurar la interacción entre la instancia de Edge Microgateway y Apigee Edge.

  • bootstrap: (predeterminada: ninguna) Es una URL que apunta a un servicio específico de Edge Microgateway que se ejecuta en Apigee Edge. Edge Microgateway usa este servicio para comunicarse con Apigee Edge. Esta URL se muestra cuando ejecutas el comando para generar el par de claves pública/privada: edgemicro genkeys. Consulta Cómo configurar Edge Microgateway para obtener más detalles.
  • jwt_public_key: (predeterminada: ninguna) Es una URL que apunta al proxy de la micropuerta de enlace de Edge que se implementa en Apigee Edge. Este proxy funciona como un extremo de autenticación para emitir tokens de acceso firmados a los clientes. Esta URL se muestra cuando ejecutas el comando para implementar el proxy: edgemicro configure. Consulta Cómo configurar Edge Microgateway para obtener más detalles.
  • quotaUri: Establece esta propiedad de configuración si deseas administrar las cuotas a través del proxy edgemicro-auth que se implementa en tu organización. Si no se configura esta propiedad, el extremo de cuota se establece de forma predeterminada en el extremo interno de la micropuerta de enlace de Edge.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

atributos de edgemicro

Esta configuración configura el proceso de Edge Microgateway.

  • port: (predeterminado: 8000) Es el número de puerto en el que escucha el proceso de la micropuerta de enlace de Edge.
  • max_connections: (valor predeterminado: -1) Especifica la cantidad máxima de conexiones entrantes simultáneas que puede recibir la micropuerta de enlace de Edge. Si se supera esta cantidad, se muestra el siguiente estado:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (valor predeterminado: -1) Es la cantidad máxima de solicitudes simultáneas que puede recibir la Microgateway de Edge antes de cerrar la conexión. El objetivo de este parámetro de configuración es frustrar los ataques de denegación del servicio. Por lo general, se establece en un número mayor que max_connections.
  • Registro:
    • nivel: (predeterminado: error)
      • info: (recomendado) Registra todas las solicitudes y respuestas que pasan por una instancia de Edge Microgateway.
      • warn: Solo registra mensajes de advertencia.
      • error: Solo registra los mensajes de error.
      • debug: Registra los mensajes de depuración junto con los mensajes de información, advertencia y error.
      • trace: Registra información de seguimiento de errores junto con mensajes de información, advertencia y error.
      • none: No se crea un archivo de registro.
    • dir: (predeterminado: /var/tmp) Es el directorio en el que se almacenan los archivos de registro.
    • stats_log_interval: (predeterminado: 60) Es el intervalo, en segundos, en el que se escribe el registro de estadísticas en el archivo de registro de la API.
    • rotate_interval: (predeterminado: 24) Es el intervalo, en horas, en el que se rotan los archivos de registro.
  • dir: Es una ruta de acceso relativa del directorio ./gateway al directorio ./plugins, o una ruta de acceso absoluta.
  • sequence: Es una lista de módulos de complementos para agregar a tu instancia de Edge Microgateway. Los módulos se ejecutarán en el orden en que se especifican aquí.
  • debug: Agrega la depuración remota al proceso de Edge Microgateway.
    • port: Es el número de puerto en el que se escuchará. Por ejemplo, configura el depurador de tu IDE para que escuche en este puerto.
    • args: Son argumentos para el proceso de depuración. Por ejemplo: args --nolazy
  • config_change_poll_interval: (predeterminado: 600 segundos) La micropuerta de enlace de Edge carga una configuración nueva periódicamente y ejecuta una recarga si se produce algún cambio. El sondeo detecta cualquier cambio realizado en Edge (cambios en los productos, proxies compatibles con microgateway, etcétera), así como los cambios realizados en el archivo de configuración local.
  • disable_config_poll_interval: (predeterminada: "false") Establece en true para desactivar el sondeo de cambios automático.
  • request_timeout: Establece un tiempo de espera para las solicitudes de destino. El tiempo de espera se establece en segundos. Si se produce un tiempo de espera, la Microgateway de Edge responde con un código de estado 504. (Se agregó la versión 2.4.x)
  • keep_alive_timeout: Esta propiedad te permite establecer el tiempo de espera de Edge Microgateway (en milisegundos). (Predeterminado: 5 segundos) (Se agregó en la versión 3.0.6)
  • headers_timeout: Este atributo limita la cantidad de tiempo (en milisegundos) que el analizador HTTP esperará para recibir los encabezados HTTP completos.

    Por ejemplo:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    De forma interna, el parámetro establece el atributo Server.headersTimeout de Node.js en las solicitudes. (Predeterminado: 5 segundos más que el tiempo establecido con edgemicro.keep_alive_timeout). Este parámetro de configuración predeterminado evita que los balanceadores de cargas o los proxies descarten la conexión por error. (Se agregó la versión 3.1.1)

  • noRuleMatchAction: (cadena) Es la acción que se debe realizar (permitir o denegar el acceso) si no se resuelve la regla de coincidencia especificada en el complemento accesscontrol (no hay coincidencia). Valores válidos: ALLOW o DENY. Valor predeterminado: ALLOW (se agregó en la versión 3.1.7).
  • enableAnalytics: (predeterminado: verdadero) Establece el atributo en false para evitar que se cargue el complemento de estadísticas. En este caso, no se realizarán llamadas a las estadísticas de Apigee Edge. Si se establece como true o cuando no se proporciona este atributo, el complemento de estadísticas funcionará como de costumbre. Consulta los atributos de edgemicro para obtener más detalles. (Se agregó la versión 3.1.8).

    Ejemplo:

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort: Este atributo te permite controlar el comportamiento de Edge Microgateway si la conexión entre el cliente (Edge Microgateway) y el servidor de destino se cierra antes de tiempo.
    Valor Descripción
    Predeterminada Si no se especifica on_target_response_abort, el comportamiento predeterminado es truncar la respuesta sin mostrar un error. En los archivos de registro, se muestra un mensaje de advertencia con targetResponse aborted y un código de respuesta 502.
    appendErrorToClientResponseBody El error personalizado TargetResponseAborted se muestra al cliente. En los archivos de registro, se muestra un mensaje de advertencia con targetResponse aborted y un código de respuesta 502. Además, el error TargetResponseAborted se registra con el mensaje Target response ended prematurely..
    abortClientRequest La Microgateway de Edge cancela la solicitud y se escribe una advertencia en los archivos de registro: TargetResponseAborted con el código de estado de solicitud 502.

Ejemplo:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

Atributos de encabezados

Estos parámetros de configuración determinan cómo se tratan ciertos encabezados HTTP.

  • x-forwarded-for: (predeterminado: verdadero) Establece como falso para evitar que los encabezados x-forwarded-for se pasen al destino. Ten en cuenta que, si hay un encabezado x-forwarded-for en la solicitud, su valor se establecerá en el valor de la IP del cliente en Edge Analytics.
  • x-forwarded-host: (predeterminado: verdadero) Establece como falso para evitar que los encabezados x-forwarded-host se pasen al destino.
  • x-request-id: (predeterminado: verdadero) Establece como falso para evitar que los encabezados x-request-id se pasen al objetivo.
  • x-response-time: (predeterminado: verdadero) Establece como falso para evitar que los encabezados x-response-time se pasen al destino.
  • via: (predeterminado: verdadero) Establece como falso para evitar que los encabezados de via se pasen al destino.

Atributos de OAuth

Esta configuración establece cómo Edge Microgateway aplica la autenticación de clientes.

  • allowNoAuthorization: (predeterminado: "false"). Si se establece como "true", las llamadas a la API pueden pasar por Edge Microgateway sin ningún encabezado de autorización. Establece este valor en "false" para exigir un encabezado de autorización (predeterminado).
  • allowInvalidAuthorization: (valor predeterminado: "false"). Si se establece en "true", las llamadas a la API pueden pasar si el token que se pasa en el encabezado Authorization no es válido o venció. Establece esta opción en "false" para exigir tokens válidos (configuración predeterminada).
  • authorization-header: (predeterminado: Authorization: Bearer) Es el encabezado que se usa para enviar el token de acceso a la Microgateway de Edge. Te recomendamos que cambies el valor predeterminado en los casos en que el objetivo necesite usar el encabezado Authorization para algún otro propósito.
  • api-key-header: (opción predeterminada: x-api-key) Es el nombre del encabezado o parámetro de consulta que se usa para pasar una clave de API a la Microgateway de Edge. Consulta también Cómo usar una clave de API.
  • keep-authorization-header: (valor predeterminado: "false"). Si se establece en "true", el encabezado de autorización que se envía en la solicitud se pasa al destino (se conserva).
  • allowOAuthOnly: Si se establece como verdadero, cada API debe llevar un encabezado de autorización con un token de acceso del portador. Te permite permitir solo el modelo de seguridad de OAuth (mientras se mantiene la retrocompatibilidad). (Se agregó en la versión 2.4.x)
  • allowAPIKeyOnly: Si se establece como verdadero, cada API debe llevar un encabezado x-api-key (o una ubicación personalizada) con una clave de API.Te permite permitir solo el modelo de seguridad de la clave de API (sin dejar de lado la retrocompatibilidad). (Se agregó en la versión 2.4.x)
  • gracePeriod: Este parámetro ayuda a evitar errores causados por discrepancias leves entre el reloj del sistema y las marcas de tiempo de No antes (nbf) o Fecha de emisión (iat) especificadas en el token de autorización JWT. Establece este parámetro en la cantidad de segundos que se permitirá para tales discrepancias. (Se agregó la versión 2.5.7)

Atributos específicos del complemento

Consulta Cómo usar complementos para obtener detalles sobre los atributos configurables de cada complemento.

Filtra proxies

Puedes filtrar qué proxies compatibles con microgateway procesará una instancia de Edge Microgateway. Cuando se inicia Edge Microgateway, descarga todos los proxies compatibles con la micropuerta de enlace en la organización con la que está asociada. Usa la siguiente configuración para limitar los proxies que procesará la micropuerta de enlace. Por ejemplo, esta configuración limita los proxies que procesará la micropuerta de enlace a tres: edgemicro_proxy-1, edgemicro_proxy-2 y edgemicro_proxy-3:

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

Cómo filtrar productos por nombre

Usa la siguiente configuración para limitar la cantidad de productos de API que descarga y procesa la micropuerta de enlace de Edge. Para filtrar los productos descargados, agrega el parámetro de consulta productnamefilter a la API de /products que se indica en el archivo *.config.yaml de la micropuerta de enlace de Edge. Por ejemplo:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

Ten en cuenta que el valor del parámetro de consulta se debe especificar en formato de expresión regular y estar codificado como URL. Por ejemplo, la regex ^[Ee]dgemicro.*$ captura nombres como "edgemicro-test-1" , "edgemicro_demo" y "Edgemicro_New_Demo". El valor codificado en URL, adecuado para su uso en el parámetro de consulta, es %5E%5BEe%5Ddgemicro.%2A%24.

El siguiente resultado de depuración muestra que solo se descargaron los productos filtrados:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

Cómo filtrar productos por atributos personalizados

Para filtrar productos según atributos personalizados, sigue estos pasos:

  1. En la IU de Edge, selecciona el proxy edgemicro_auth en la organización o el entorno en el que configuraste Edge Microgateway.
  2. En la pestaña Desarrollar, abre la política JavaCallout en el editor.
  3. Agrega un atributo personalizado con la clave products.filter.attributes con una lista de nombres de atributos separados por comas. Solo se mostrarán en Edge Microgateway los productos que contengan alguno de los nombres de atributos personalizados.
  4. De manera opcional, puedes inhabilitar la verificación para ver si el producto está habilitado para el entorno actual. Para ello, configura el atributo personalizado products.filter.env.enable como false. (El valor predeterminado es verdadero).
  5. (Solo para la nube privada) Si usas Edge para una nube privada, establece la propiedad org.noncps en true para extraer productos para entornos que no sean de CPS.
  6. Por ejemplo:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>

Cómo filtrar productos por estado de revocación

Los productos de API tienen tres códigos de estado: Pendiente, Aprobado y Revocado. Se agregó una nueva propiedad llamada allowProductStatus a la política de Variables de JWT de Set en el proxy edgemicro-auth. Para usar esta propiedad y filtrar los productos de API que se enumeran en el JWT, haz lo siguiente:

  1. Abre el proxy edgemicro-auth en el editor de proxy de Apigee.
  2. Agrega la propiedad allowProductStatus al XML de la política SetJWTVariables y especifica una lista de códigos de estado separados por comas para filtrar. Por ejemplo, para filtrar por el estado Pendiente y Revocada, haz lo siguiente:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript timeLimit="20000" async="false" continueOnError="false"
        enabled="true" name="Set-JWT-Variables">
        <DisplayName>Set JWT Variables</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="allowProductStatus">Pending,Revoked</Property>
        </Properties>
        <ResourceURL>jsc://set-jwt-variables.js</ResourceURL>
    </Javascript>

    Si solo quieres que se muestren los productos Aprobados, configura la propiedad de la siguiente manera:

    <Property name="allowProductStatus">Approved</Property>
  3. Guarda el proxy.

    Si no está presente la etiqueta Property, los productos con todos los códigos de estado se mostrarán en el JWT.

    Para usar esta propiedad nueva, debes actualizar el proxy edgemicro-auth.

Cómo configurar la frecuencia de los envíos de estadísticas

Usa estos parámetros de configuración para controlar la frecuencia con la que la Microgateway de Edge envía datos de estadísticas a Apigee:

  • bufferSize (opcional): Es la cantidad máxima de registros de Analytics que puede contener el búfer antes de comenzar a descartar los registros más antiguos. Predeterminado: 10,000
  • batchSize (opcional): Es el tamaño máximo de un lote de registros de estadísticas que se envía a Apigee. Predeterminado: 500
  • flushInterval (opcional): Es la cantidad de milisegundos entre cada limpieza de un lote de registros de estadísticas que se envía a Apigee. Valor predeterminado: 5,000

Por ejemplo:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

Enmascara datos de estadísticas

La siguiente configuración evita que la información de la ruta de la solicitud aparezca en las estadísticas de Edge. Agrega lo siguiente a la configuración de la micropuerta de enlace para enmascarar el URI o la ruta de acceso de la solicitud. Ten en cuenta que el URI consta de las partes del nombre de host y la ruta de acceso de la solicitud.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

Cómo segregar las llamadas a la API en Edge Analytics

Puedes configurar el complemento de estadísticas para que segregue una ruta de acceso a la API específica de modo que aparezca como un proxy independiente en los paneles de Edge Analytics. Por ejemplo, puedes separar una API de verificación de estado en el panel para evitar confundirla con llamadas reales a proxies de API. En el panel de Analytics, los proxies segregados siguen este patrón de nombres:

edgemicro_proxyname-health

En la siguiente imagen, se muestran dos proxies segregados en el panel de Analytics: edgemicro_hello-health y edgemicro_mock-health:

Usa estos parámetros para separar las rutas de acceso relativas y absolutas en el panel de Analytics como proxies independientes:

  • relativePath (opcional): Especifica una ruta de acceso relativa para segregar en el panel de Analytics. Por ejemplo, si especificas /healthcheck, todas las llamadas a la API que contengan la ruta de acceso /healthcheck aparecerán en el panel como edgemicro_proxyname-health. Ten en cuenta que esta marca ignora la ruta de acceso base del proxy. Para realizar la segregación en función de una ruta de acceso completa, incluida la ruta de acceso base, usa la marca proxyPath.
  • proxyPath (opcional): Especifica una ruta de acceso completa del proxy de API, incluida la ruta base del proxy, para separarla en el panel de estadísticas. Por ejemplo, si especificas /mocktarget/healthcheck, en el que /mocktarget es la ruta base del proxy, todas las llamadas a la API con la ruta /mocktarget/healthcheck aparecerán en el panel como edgemicro_proxyname-health.

Por ejemplo, en la siguiente configuración, el complemento de estadísticas segregará cualquier ruta de API que contenga /healthcheck. Esto significa que /foo/healthcheck y /foo/bar/healthcheck se segregarán como un proxy independiente llamado edgemicro_proxyname-health en el panel de estadísticas.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

En la siguiente configuración, cualquier API con la ruta de acceso del proxy /mocktarget/healthcheck se segregará como un proxy independiente llamado edgemicro_proxyname-health en el panel de estadísticas.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

Cómo configurar Edge Microgateway detrás del firewall de la empresa

Usa un proxy HTTP para la comunicación con Apigee Edge

Se agregó en la versión 3.1.2.

Para usar un proxy HTTP para la comunicación entre Edge Microgateway y Apigee Edge, haz lo siguiente:

  1. Configura las variables de entorno HTTP_PROXY, HTTPS_PROXY y NO_PROXY. Estas variables controlan los hosts de cada proxy HTTP que deseas usar para la comunicación con Apigee Edge o qué hosts no deben controlar la comunicación con Apigee Edge. Por ejemplo:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    Ten en cuenta que NO_PROXY puede ser una lista de dominios delimitados por comas a los que la Microgateway de Edge no debe usar como proxy.

    Para obtener más información sobre estas variables, consulta https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables.

  2. Reinicia Edge Microgateway.

Usa un proxy HTTP para la comunicación de destino

Se agregó en la versión 3.1.2.

Para usar un proxy HTTP para la comunicación entre la Microgateway de Edge y los destinos de backend, haz lo siguiente:

  1. Agrega la siguiente configuración al archivo de configuración de la micropuerta de enlace:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    Donde:

    • tunnel: (Opcional) Cuando es verdadero, la Microgateway de Edge usa el método HTTP CONNECT para establecer una tunelización de solicitudes HTTP a través de una sola conexión TCP. (Lo mismo sucede si las variables de entorno, como se menciona a continuación, para configurar el proxy están habilitadas para TLS). Predeterminada: false
    • url: Es la URL del proxy HTTP.
    • bypass: (Opcional) Especifica una o más URLs de host de destino separadas por comas que deben omitir el proxy HTTP. Si no se establece esta propiedad, usa la variable de entorno NO_PROXY para especificar qué URLs de destino se omitirán.
    • enabled: Si es verdadero y se configuró proxy.url, usa el valor proxy.url para el proxy HTTP. Si es verdadero y no se configuró proxy.url, usa los proxies especificados en las variables de entorno del proxy HTTP HTTP_PROXY y HTTPS_PROXY, como se describe en Usa un proxy HTTP para la comunicación con Apigee Edge.

    Por ejemplo:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. Reinicia Edge Microgateway.

Usa comodines en proxies compatibles con Microgateway

Puedes usar uno o más comodines “*” en la ruta de acceso base de un proxy edgemicro_* (compatible con Microgateway). Por ejemplo, una ruta base de /team/*/members permite que los clientes llamen a https://[host]/team/blue/members y a https://[host]/team/green/members sin necesidad de crear proxies de API nuevos para admitir equipos nuevos. Ten en cuenta que no se admite /**/.

Importante: Apigee NO admite el uso de un comodín “*” como el primer elemento de una ruta base. Por ejemplo, NO se admite la búsqueda de /*/.

Rota las claves JWT

En algún momento, después de generar un JWT por primera vez, es posible que debas cambiar el par de claves públicas/privadas almacenado en el KVM encriptado de Edge. Este proceso de generación de un par de claves nuevo se denomina rotación de claves.

Cómo Edge Microgateway usa JWT

El token web JSON (JWT) es un estándar de token que se describe en RFC7519. El JWT proporciona una forma de firmar un conjunto de reclamos, que el destinatario del JWT puede verificar de forma confiable.

Puedes generar un JWT con la CLI y usarlo en el encabezado de autorización de las llamadas a la API en lugar de una clave de API. Por ejemplo:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

Para obtener información sobre cómo generar JWT con la CLI, consulta Genera un token.

¿Qué es la rotación de claves?

En algún momento, después de generar un JWT por primera vez, es posible que debas cambiar el par de claves públicas/privadas almacenado en el KVM encriptado de Edge. Este proceso de generación de un par de claves nuevo se denomina rotación de claves. Cuando se rotan las claves, se genera un nuevo par de claves públicas/privadas en el KVM “microgateway” en la organización o el entorno de Apigee Edge. Además, la clave pública antigua se conserva junto con su valor de ID de clave original.

Para generar un JWT, Edge usa la información almacenada en la KVM encriptada. Se creó un KVM llamado microgateway y se propagó con claves cuando configuraste Edge Microgateway inicialmente. Las claves de la KVM se usan para firmar y encriptar un JWT.

Las claves de KVM incluyen las siguientes:

  • private_key: Es la clave privada RSA más reciente (creada más recientemente) que se usa para firmar los JWT.

  • public_key: Es el certificado más reciente (creado más recientemente) que se usa para verificar los JWT firmados con private_key.

  • private_key_kid: Es el ID de clave privada más reciente (creado más recientemente). Este ID de clave está asociado con el valor de private_key y se usa para admitir la rotación de claves.

  • public_key1_kid: Es el ID de clave pública más reciente (creado más recientemente). Esta clave está asociada con el valor public_key1 y se usa para admitir la rotación de claves. Este valor es el mismo que el kid de la clave privada.

  • public_key1: Es la clave pública más reciente (la que se creó más recientemente).

Cuando realizas la rotación de claves, los valores de clave existentes se reemplazan en el mapa y se agregan claves nuevas para conservar las claves públicas anteriores. Por ejemplo:

  • public_key2_kid: Es el ID de clave pública anterior. Esta clave está asociada con el valor public_key2 y se usa para admitir la rotación de claves.

  • public_key2: Es la clave pública anterior.

Los JWT que se presenten para la verificación se verificarán con la nueva clave pública. Si la verificación falla, se usará la clave pública anterior hasta que venza el JWT (después del intervalo de token_expiry*, 30 minutos de forma predeterminada). De esta manera, puedes "rotar" las claves sin interrumpir de inmediato el tráfico de la API.

Cómo realizar la rotación de claves

En esta sección, se explica cómo realizar una rotación de claves.

  1. Para actualizar el KVM, usa el comando edgemicro upgradekvm. Para obtener detalles sobre cómo ejecutar este comando, consulta Cómo actualizar el KVM. Solo debes hacer este paso una vez.
  2. Para actualizar el proxy edgemicro-oauth, usa el comando edgemicro upgradeauth. Para obtener detalles sobre cómo ejecutar este comando, consulta Actualiza el proxy de edgemicro-auth. Solo debes hacer este paso una vez.
  3. Agrega la siguiente línea a tu archivo ~/.edgemicro/org-env-config.yaml, en el que debes especificar la misma organización y el mismo entorno que configuraste para que use la micropuerta de enlace:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. Ejecuta el comando de rotación de claves para rotar las claves. Para obtener detalles sobre este comando, consulta Rotación de claves.

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    Por ejemplo:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

Después de la rotación de claves, Edge muestra varias claves a Edge Microgateway. Ten en cuenta que, en el siguiente ejemplo, cada clave tiene un valor "kid" (ID de clave) único. Luego, la micropuerta de enlace usa estas claves para validar los tokens de autorización. Si la validación del token falla, la micropuerta de enlace busca si hay una clave anterior en el conjunto de claves y la prueba. El formato de las claves que se muestran es JSON Web Key (JWK). Puedes obtener información sobre este formato en la RFC 7517.

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

Cómo configurar una demora "no antes"

En las versiones 3.1.5 y anteriores, la nueva clave privada generada por el comando rotatekey se aplicaba de inmediato, y los tokens nuevos generados se firmaban con la nueva clave privada. Sin embargo, la nueva clave pública solo estaba disponible para las instancias de la micropuerta de enlace de Edge cada 10 minutos (de forma predeterminada) cuando se actualizaba la configuración de la micropuerta de enlace. Debido a este retraso entre la firma del token y la actualización de la instancia de la micropuerta de enlace, los tokens firmados con la clave más reciente se rechazarán hasta que todas las instancias reciban la clave pública más reciente.

En los casos en que existen varias instancias de micropuerta de enlace, el retraso de la clave pública a veces generaba errores intermitentes del entorno de ejecución con el estado 403, ya que la validación del token se aprobaba en una instancia, pero fallaba en otra hasta que se actualizaban todas las instancias.

A partir de la versión 3.1.6, una nueva marca en el comando rotatekey te permite especificar una demora para que la nueva clave privada se aplique, lo que permite que se actualicen todas las instancias de la micropuerta de enlace y reciban la nueva clave pública. La nueva marca es --nbf, que significa "no antes". Esta marca toma un valor entero, la cantidad de minutos que se retrasará.

En el siguiente ejemplo, la demora se establece en 15 minutos:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

Ten en cuenta que una práctica recomendada es establecer la demora en más de la configuración de config_change_poll_internal, que es de 10 minutos de forma predeterminada. Consulta también los atributos de edgemicro.

Cómo filtrar proxies descargados

De forma predeterminada, Edge Microgateway descarga todos los proxies de tu organización de Edge que comienzan con el prefijo de nombres “edgemicro_”. Puedes cambiar este valor predeterminado para descargar proxies cuyos nombres coincidan con un patrón.

  1. Abre el archivo de configuración de Edge Micro: ~/.edgemicro/org-env-config.yaml
  2. Agrega el elemento proxyPattern en edge_config. Por ejemplo, el siguiente patrón descargará proxies como edgemicro_foo, edgemicro_fast y edgemicro_first.
    edge_config:proxyPattern: edgemicro_f*

Especifica productos sin proxies de API

En Apigee Edge, puedes crear un producto de API que no contenga ningún proxy de API. Esta configuración de productos permite que una clave de API asociada con ese producto funcione con cualquier proxy implementado en tu organización. A partir de la versión 2.5.4, Edge Microgateway admite esta configuración del producto.

Depuración y solución de problemas

Cómo conectarse a un depurador

Puedes ejecutar Edge Microgateway con un depurador, como node-inspector. Esto es útil para solucionar problemas y depurar complementos personalizados.

  1. Reinicia Edge Microgateway en modo de depuración. Para ello, agrega DEBUG=* al comienzo del comando start:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Para dirigir el resultado de la depuración a un archivo, puedes usar este comando:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. Inicia el depurador y configúralo para que escuche el número de puerto del proceso de depuración.
  3. Ahora puedes revisar el código de Edge Microgateway, establecer puntos de interrupción, observar expresiones, etcétera.

Puedes especificar marcas estándar de Node.js relacionadas con el modo de depuración. Por ejemplo, --nolazy ayuda a depurar código asíncrono.

Cómo verificar los archivos de registro

Si tienes problemas, asegúrate de examinar los archivos de registro para obtener detalles de la ejecución y información sobre errores. Para obtener más información, consulta Cómo administrar archivos de registro.

Cómo usar la seguridad de las claves de API

Las claves de API proporcionan un mecanismo simple para autenticar clientes que realizan solicitudes a Edge Microgateway. Para obtener una clave de API, copia el valor de la clave de consumidor (también llamada ID de cliente) de un producto de Apigee Edge que incluya el proxy de autenticación de Microgateway de Edge.

Almacenamiento en caché de claves

Las claves de API se intercambian por tokens de portador, que se almacenan en caché. Para inhabilitar el almacenamiento en caché, configura el encabezado Cache-Control: no-cache en las solicitudes entrantes a la micropuerta de enlace de Edge.

Usa una clave de API

Puedes pasar la clave de API en una solicitud a la API, ya sea como un parámetro de consulta o en un encabezado. De forma predeterminada, el nombre del encabezado y del parámetro de consulta son x-api-key.

Ejemplo de parámetro de consulta:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

Ejemplo del encabezado:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Cómo configurar el nombre de la clave de API

De forma predeterminada, x-api-key es el nombre que se usa para el encabezado de la clave de API y el parámetro de consulta. Puedes cambiar este valor predeterminado en el archivo de configuración, como se explica en Cómo realizar cambios de configuración. Por ejemplo, para cambiar el nombre a apiKey, haz lo siguiente:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

En este ejemplo, el parámetro de consulta y el nombre del encabezado se cambian a apiKey. El nombre x-api-key ya no funcionará en ninguno de los casos. Consulta también Cómo realizar cambios de configuración.

Por ejemplo:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Para obtener más información sobre el uso de claves de API con solicitudes de proxy, consulta Cómo proteger Edge Microgateway.

Habilita los códigos de respuesta upstream

De forma predeterminada, el complemento oauth solo muestra códigos de estado de error 4xx si la respuesta no es un estado 200. Puedes cambiar este comportamiento para que siempre muestre el código 4xx o 5xx exacto, según el error.

Para habilitar esta función, agrega la propiedad oauth.useUpstreamResponse: true a la configuración de Edge Microgateway. Por ejemplo:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

Usa la seguridad de tokens de OAuth2

En esta sección, se explica cómo obtener tokens de acceso y de actualización de OAuth2. Los tokens de acceso se usan para realizar llamadas a la API seguras a través de la micropuerta de enlace. Los tokens de actualización se usan para obtener nuevos tokens de acceso.

Cómo obtener un token de acceso

En esta sección, se explica cómo usar el proxy edgemicro-auth para obtener un token de acceso.

También puedes obtener un token de acceso con el comando de la CLI de edgemicro token. Para obtener más información sobre la CLI, consulta Cómo administrar tokens.

API 1: Envía credenciales como parámetros del cuerpo

Sustituye los nombres de tu organización y entorno en la URL, y los valores de ID de consumidor y secreto de consumidor obtenidos de una app para desarrolladores en Apigee Edge por los parámetros del cuerpo client_id y client_secret:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: Envía credenciales en un encabezado de autenticación básica

Envía las credenciales del cliente como un encabezado de autenticación básica y el grant_type como un parámetro de formulario. Este formato de comando también se analiza en la RFC 6749: El framework de autorización de OAuth 2.0.

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

Resultado de muestra

La API muestra una respuesta JSON. Ten en cuenta que no hay diferencia entre las propiedades token y access_token. Puedes usar cualquiera de las dos. Ten en cuenta que expires_in es un valor entero especificado en segundos.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

Cómo obtener un token de actualización

Para obtener un token de actualización, realiza una llamada a la API al extremo /token del proxy edgemicro-auth. DEBES realizar esta llamada a la API con el tipo de otorgamiento password. En los siguientes pasos, se explica el proceso.

  1. Obtén un token de acceso y actualización con la API de /token. Ten en cuenta que el tipo de otorgamiento es password:
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    La API muestra un token de acceso y un token de actualización. La respuesta se ve similar a la siguiente. Ten en cuenta que los valores de expires_in son números enteros y se especifican en segundos.

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": 108,
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": 431,
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. Ahora puedes usar el token de actualización para obtener un token de acceso nuevo llamando al extremo /refresh de la misma API. Por ejemplo:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    La API muestra un token de acceso nuevo. La respuesta es similar a la siguiente:

    {
        "token": "your-new-access-token"
        }

Supervisión para siempre

Especifica un extremo de archivo de configuración

Si ejecutas varias instancias de Edge Microgateway, te recomendamos que administres sus configuraciones desde una sola ubicación. Para ello, especifica un extremo HTTP en el que Edge Micro pueda descargar su archivo de configuración. Puedes especificar este extremo cuando inicias Edge Micro con la marca -u.

Por ejemplo:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

donde el extremo mgconfig muestra el contenido de tu archivo de configuración. Este es el archivo que, de forma predeterminada, se encuentra en ~/.edgemicro y tiene la convención de nombres org-env-config.yaml.

Inhabilita el almacenamiento en búfer de datos de la conexión TCP

Puedes usar el atributo de configuración nodelay para inhabilitar el almacenamiento en búfer de datos para las conexiones TCP que usa Edge Microgateway.

De forma predeterminada, las conexiones TCP usan el algoritmo de Nagle para almacenar en búfer los datos antes de enviarlos. Si estableces nodelay en true, se inhabilita este comportamiento (los datos se activarán de inmediato cada vez que se llame a socket.write()). Consulta también la documentación de Node.js para obtener más detalles.

Para habilitar nodelay, edita el archivo de configuración de Edge Micro de la siguiente manera:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Ejecuta Edge Microgateway en modo independiente

Puedes ejecutar Edge Microgateway desconectada por completo de cualquier dependencia de Apigee Edge. Esta situación, llamada modo independiente, te permite ejecutar y probar la Microgateway de Edge sin una conexión a Internet.

En el modo independiente, no funcionan las siguientes funciones, ya que requieren conexión a Apigee Edge:

  • OAuth y clave de API
  • Cuota
  • Analytics

Por otro lado, los complementos personalizados y la detención de picos funcionan de forma normal, ya que no requieren una conexión a Apigee Edge. Además, un nuevo complemento llamado extauth te permite autorizar llamadas a la API a la micropuerta de enlace con un JWT en modo independiente.

Configura y, luego, inicia la puerta de enlace

Para ejecutar Edge Microgateway en modo independiente, sigue estos pasos:

  1. Crea un archivo de configuración con el siguiente nombre: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    Por ejemplo:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. Pega el siguiente código en el archivo:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. Exporta la siguiente variable de entorno con el valor “1”:
    export EDGEMICRO_LOCAL=1
  4. Ejecuta el siguiente comando start, en el que proporcionas valores para crear una instancia del proxy local:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    Donde:

    • $ORG es el nombre de "org" que usaste en el nombre del archivo de configuración.
    • $ENV es el nombre de "env" que usaste en el nombre del archivo de configuración.
    • $LOCAL_PROXY_NAME es el nombre del proxy local que se creará. Puedes usar cualquier nombre que desees.
    • $LOCAL_PROXY_VERSION es el número de versión del proxy.
    • $TARGET_URL es la URL del destino del proxy. (El objetivo es el servicio al que llama el proxy).
    • $BASE_PATH es la ruta base del proxy. Este valor debe comenzar con una barra diagonal. Para una ruta de acceso raíz, especifica solo una barra diagonal, por ejemplo, "/".

    Por ejemplo:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. Probar la configuración.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    Debido a que el complemento extauth está en el archivo foo-bar-config.yaml, obtienes un error "missing_authorization". Este complemento valida un JWT que debe estar presente en el encabezado de autorización de la llamada a la API. En la siguiente sección, obtendrás un JWT que permitirá que las llamadas a la API se realicen sin el error.

Ejemplo: Cómo obtener un token de autorización

En el siguiente ejemplo, se muestra cómo obtener un JWT del extremo JWT de Edge Microgateway en Apigee Edge (edgemicro-auth/jwkPublicKeys). Este extremo se implementa cuando realizas una configuración estándar de Edge Microgateway. Para obtener el JWT del extremo de Apigee, primero debes realizar la configuración estándar de la micropuerta de enlace de Edge y conectarte a Internet. El extremo de Apigee se usa aquí solo como ejemplo y no es obligatorio. Si lo deseas, puedes usar otro extremo de token JWT. Si es así, deberás obtener el JWT con la API proporcionada para ese extremo.

En los siguientes pasos, se explica cómo obtener un token con el extremo edgemicro-auth/jwkPublicKeys:

  1. Debes realizar una configuración estándar de Edge Microgateway para implementar el proxy edgemicro-auth en tu organización o entorno en Apigee Edge. Si ya realizaste este paso anteriormente, no es necesario que lo repitas.
  2. Si implementaste Edge Microgateway en Apigee Cloud, debes tener conexión a Internet para poder obtener un JWT de este extremo.
  3. Detén Edge Microgateway:
    edgemicro stop
  4. En el archivo de configuración que creaste anteriormente ($HOME/.edgemicro/org-env-config.yaml), dirige el atributo extauth:publickey_url al extremo edgemicro-auth/jwkPublicKeys en tu organización o entorno de Apigee Edge. Por ejemplo:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. Reinicia Edge Microgateway como lo hiciste anteriormente, con los nombres de org/env que usaste en el nombre del archivo de configuración. Por ejemplo:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. Obtén un token JWT del extremo de autorización. Como usas el extremo edgemicro-auth/jwkPublicKeys, puedes usar este comando de la CLI:

Puedes generar un JWT para Edge Microgateway con el comando edgemicro token o una API. Por ejemplo:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

Donde:

  • your_org es el nombre de tu organización de Apigee para la que configuraste Edge Microgateway anteriormente.
  • your_env es un entorno de la organización.
  • La opción i especifica la clave de consumidor de una app para desarrolladores que tiene un producto que incluye el proxy edgemicro-auth.
  • La opción s especifica el secreto de consumidor de una app de desarrollador que tiene un producto que incluye el proxy edgemicro-auth.

Este comando le solicita a Apigee Edge que genere un JWT que se pueda usar para verificar las llamadas a la API.

Consulta también Cómo generar un token.

Prueba la configuración independiente

Para probar la configuración, llama a la API con el token agregado en el encabezado Authorization de la siguiente manera:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

Ejemplo:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

Resultado de ejemplo:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

Cómo usar el modo de proxy local

En el modo de proxy local, Edge Microgateway no requiere que se implemente un proxy compatible con microgateway en Apigee Edge. En su lugar, configuras un "proxy local" proporcionando un nombre de proxy local, una ruta de acceso base y una URL de destino cuando inicias la micropuerta de enlace. Las llamadas a la API a la micropuerta de enlace se envían a la URL de destino del proxy local. En todos los demás aspectos, el modo de proxy local funciona exactamente igual que ejecutar la puerta de enlace de microservicios de Edge en su modo normal. La autenticación funciona de la misma manera, al igual que la detención de picos y la aplicación forzosa de cuotas, los complementos personalizados, etcétera.

Caso de uso y ejemplo

El modo de proxy local es útil cuando solo necesitas asociar un proxy con una instancia de Edge Microgateway. Por ejemplo, puedes incorporar Edge Microgateway en Kubernetes como un proxy de sidecar, en el que una microgateway y un servicio se ejecutan en un solo pod, y en el que la microgateway administra el tráfico hacia y desde su servicio complementario. En la siguiente imagen, se ilustra esta arquitectura en la que Edge Microgateway funciona como un proxy de Sidecar en un clúster de Kubernetes. Cada instancia de micropuerta de enlace se comunica solo con un extremo en su servicio complementario:

Edgemicro como sidecar

Un beneficio de este estilo de arquitectura es que Edge Microgateway proporciona administración de API para servicios individuales implementados en un entorno de contenedor, como un clúster de Kubernetes.

Cómo configurar el modo de proxy local

Para configurar la Microgateway de Edge para que se ejecute en modo de proxy local, sigue estos pasos:

  1. Ejecuta edgemicro init para configurar tu entorno de configuración local, exactamente como lo harías en una configuración típica de Edge Microgateway. Consulta también Configura Edge Microgateway.
  2. Ejecuta edgemicro configure, como lo harías en un procedimiento de configuración típico de Edge Microgateway. Por ejemplo:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    Este comando implementa la política edgemicro-auth en Edge y muestra una clave y un secreto que necesitarás para iniciar la micropuerta de enlace. Si necesitas ayuda, consulta Configura Edge Microgateway.

  3. En Apigee Edge, crea un producto de API con los siguientes requisitos de configuración obligatorios (puedes administrar todas las demás configuraciones como desees):
    • Debes agregar el proxy edgemicro-auth al producto. Este proxy se implementó automáticamente cuando ejecutaste edgemicro configure.
    • Debes proporcionar una ruta de acceso al recurso. Apigee recomienda agregar esta ruta al producto: /**. Para obtener más información, consulta Configura el comportamiento de la ruta de recursos. Consulta también Crea productos de API en la documentación de Edge.
  4. En Apigee Edge, crea un desarrollador o usa uno existente si lo deseas. Para obtener ayuda, consulta Cómo agregar desarrolladores con la IU de administración de Edge.

  5. En Apigee Edge, crea una app para desarrolladores. Debes agregar el producto de API que acabas de crear a la app. Para obtener ayuda, consulta Cómo registrar una app en la IU de administración de Edge.
  6. En la máquina en la que está instalada la Microgateway de Edge, exporta la siguiente variable de entorno con el valor “1”.
    export EDGEMICRO_LOCAL_PROXY=1
  7. Ejecuta el siguiente comando de start:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    Donde:

    • your_org es tu organización de Apigee.
    • your_environment es un entorno de tu organización.
    • your_key es la clave que se mostró cuando ejecutaste edgemicro configure.
    • your_secret es el secreto que se mostró cuando ejecutaste edgemicro configure.
    • local_proxy_name es el nombre del proxy local que se creará.
    • local_proxy_version es el número de versión del proxy.
    • target_url es la URL del destino del proxy (el servicio al que llamará el proxy).
    • base_path es la ruta base del proxy. Este valor debe comenzar con una barra diagonal. Para una ruta de acceso raíz, especifica solo una barra diagonal, por ejemplo, "/".

    Por ejemplo:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

Prueba la configuración

Para probar la configuración del proxy local, llama al extremo del proxy. Por ejemplo, si especificaste una ruta base de /echo, puedes llamar al proxy de la siguiente manera:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

Esta llamada inicial a la API generó un error porque no proporcionaste una clave de API válida. Puedes encontrar la clave en la app para desarrolladores que creaste anteriormente. Abre la app en la IU de Edge, copia la clave de consumidor y úsala de la siguiente manera:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

Por ejemplo:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

Resultado de ejemplo:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

Cómo usar el sincronizador

En esta sección, se explica cómo usar el sincronizador, una función opcional que mejora la resiliencia de Edge Microgateway, ya que le permite recuperar datos de configuración de Apigee Edge y escribirlos en una base de datos de Redis local. Con una instancia de sincronizador en ejecución, otras instancias de Edge Microgateway que se ejecutan en diferentes nodos pueden recuperar su configuración directamente desde esta base de datos.

Actualmente, la función de sincronizador es compatible con Redis 5.0.x.

¿Qué es el sincronizador?

El sincronizador proporciona un nivel de resiliencia para Edge Microgateway. Ayuda a garantizar que cada instancia de Edge Microgateway use la misma configuración y que, en caso de una interrupción de Internet, las instancias de Edge Microgateway puedan iniciarse y ejecutarse correctamente.

De forma predeterminada, las instancias de Edge Microgateway deben poder comunicarse con Apigee Edge para recuperar y actualizar sus datos de configuración, como las configuraciones de proxy y productos de API. Si se interrumpe la conexión a Internet con Edge, las instancias de la micropuerta de enlace pueden seguir funcionando porque los datos de configuración más recientes se almacenan en caché. Sin embargo, las instancias de micropuerta de enlace nuevas no se pueden iniciar sin una conexión clara. Además, es posible que una interrupción de Internet genere una o más instancias de micropuerta de enlace que se ejecuten con información de configuración que no esté sincronizada con otras instancias.

El sincronizador de Edge Microgateway proporciona un mecanismo alternativo para que las instancias de Edge Microgateway recuperen los datos de configuración que necesitan para iniciar y procesar el tráfico de proxy de API. Los datos de configuración recuperados de las llamadas a Apigee Edge incluyen la llamada a jwk_public_keys, la llamada a jwt_public_key, la llamada de inicio y la llamada a productos de API. El sincronizador permite que todas las instancias de Edge Microgateway que se ejecutan en diferentes nodos se inicien correctamente y permanezcan sincronizadas, incluso si se interrumpe la conexión a Internet entre Edge Microgateway y Apigee Edge.

El sincronizador es una instancia de Edge Microgateway configurada de forma especial. Su único propósito es sondear Apigee Edge (se puede configurar el tiempo), recuperar datos de configuración y escribirlos en una base de datos Redis local. La instancia del sincronizador no puede procesar el tráfico del proxy de API. Se pueden configurar otras instancias de Edge Microgateway que se ejecutan en diferentes nodos para recuperar datos de configuración de la base de datos de Redis en lugar de Apigee Edge. Debido a que todas las instancias de micropuerta de enlace extraen sus datos de configuración de la base de datos local, pueden iniciar y procesar solicitudes a la API incluso en caso de una interrupción de Internet.

Cómo configurar una instancia de sincronizador

Agrega la siguiente configuración al archivo org-env/config.yaml de la instalación de Edge Microgateway que deseas usar como sincronizador:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

Por ejemplo:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
Opción Descripción
redisHost El host en el que se ejecuta tu instancia de Redis. Valor predeterminado: 127.0.0.1
redisPort Es el puerto de la instancia de Redis. Valor predeterminado: 6379
redisDb La base de datos de Redis que se usará. Valor predeterminado: 0
redisPassword La contraseña de tu base de datos.

Por último, guarda el archivo de configuración y, luego, inicia la instancia de Edge Microgateway. Comenzará a sondear Apigee Edge y a almacenar los datos de configuración descargados en la base de datos de Redis.

Cómo configurar instancias normales de Edge Microgateway

Con el sincronizador en ejecución, puedes configurar nodos adicionales de la micropuerta de enlace de Edge para ejecutar instancias de micropuerta de enlace normales que procesen el tráfico de proxy de API. Sin embargo, configuras estas instancias para que obtengan sus datos de configuración de la base de datos de Redis en lugar de Apigee Edge.

Agrega la siguiente configuración al archivo org-env/config.yaml de cada nodo adicional de la micropuerta de enlace de Edge. Ten en cuenta que la propiedad synchronizerMode se configura como 0. Esta propiedad establece que la instancia funcione como una instancia normal de la micropuerta de enlace de Edge que procesa el tráfico de proxy de la API, y la instancia obtendrá sus datos de configuración de la base de datos de Redis.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Por ejemplo:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Propiedades de configuración

Se agregaron las siguientes propiedades de configuración para admitir el uso del sincronizador:

Atributo Valores Descripción
edge_config.synchronizerMode 0 o 1

Si es 0 (el valor predeterminado), Edge Microgateway opera en su modo estándar.

Si es 1, inicia la instancia de Edge Microgateway para que funcione como un sincronizador. En este modo, la instancia extraerá datos de configuración de Apigee Edge y los almacenará en una base de datos Redis local. Esta instancia no puede procesar solicitudes de proxy de API. Su único propósito es sondear Apigee Edge en busca de datos de configuración y escribirlos en la base de datos local. Luego, debes configurar otras instancias de microgateway para que lean de la base de datos.

edge_config.redisBasedConfigCache True o False Si es verdadero, la instancia de Edge Microgateway recupera sus datos de configuración de la base de datos de Redis en lugar de Apigee Edge. La base de datos de Redis debe ser la misma en la que el sincronizador está configurado para escribir. Si la base de datos de Redis no está disponible o está vacía, la micropuerta de enlace busca un archivo cache-config.yaml existente para su configuración.

Si es falso (la configuración predeterminada), la instancia de Edge Microgateway recupera los datos de configuración de Apigee Edge como de costumbre.

edgemicro.config_change_poll_interval Intervalo de tiempo, en segundos Especifica el intervalo de sondeo para que el sincronizador extraiga datos de Apigee Edge.

Cómo configurar URLs de exclusión para complementos

Puedes configurar la micropuerta de enlace para que omita el procesamiento de complementos para URLs especificadas. Puedes configurar estas URLs de "exclusión" de forma global (para todos los complementos) o para complementos específicos.

Por ejemplo:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

En este ejemplo, los complementos no procesarán las llamadas entrantes de proxy de API con las rutas /hello o /proxy_one. Además, se omitirá el complemento json2xml para las APIs con /hello/xml en su ruta de acceso.

Cómo configurar atributos de configuración con valores de variables de entorno

Puedes especificar variables de entorno con etiquetas en el archivo de configuración. Las etiquetas de las variables de entorno especificadas se reemplazan por los valores reales de las variables de entorno. Los reemplazos solo se almacenan en la memoria y no en la configuración ni en los archivos de caché originales.

En este ejemplo, el atributo key se reemplaza por el valor de la variable de entorno TARGETS_SSL_CLIENT_KEY, etcétera.

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

En este ejemplo, se usa la etiqueta <n> para indicar un valor entero. Solo se admiten números enteros positivos.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

En este ejemplo, la etiqueta <b> se usa para indicar un valor booleano (es decir, verdadero o falso).

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>