Usa OAuth2 para acceder a la API de Edge

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

Apigee Edge te permite realizar llamadas a la API de Edge que se autentican con tokens OAuth2. La compatibilidad con OAuth2 está habilitada de forma predeterminada en Edge para las cuentas de Cloud. Si usas Edge para la nube privada, no puedes usar OAuth2 sin primero configurar SAML o LDAP.

Cómo funciona OAuth2 (con la API de Apigee Edge)

Las llamadas a la API de Apigee Edge requieren autenticación para que podamos estar seguros de que usted es quien dices que eres. Para autenticarte, es necesario que envíes un token de acceso de OAuth2 con tu solicitud para acceder a la API.

Por ejemplo, si quisieras obtener detalles sobre una organización en Edge, deberías enviar una solicitud a una URL como la siguiente:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

Pero no puedes simplemente enviar esa solicitud sin decirnos quién eres. De lo contrario, cualquiera los usuarios podrían ver los detalles de tu organización.

Aquí es donde entra en juego OAuth2: para autenticarte, necesitamos que nos envíes un token de acceso. en esa solicitud también. El token de acceso nos indica quién eres para asegurarnos de que tienes permiso ver los detalles de la organización.

Por suerte, puedes obtener un token si envías tus credenciales al servicio de Edge de OAuth2. El servicio responde con tokens de acceso y actualización.

Flujo de OAuth2: La solicitud inicial

En la siguiente imagen, se muestra el flujo de OAuth2 cuando accedes a la API de Edge para la primera hora:

Flujo de OAuth: Primera solicitud
Figura 1: Flujo de OAuth: Primera solicitud

Como se muestra en la figura 1, cuando realizas la solicitud inicial a la API de Edge:

  1. Solicitas un token de acceso. Puedes hacerlo con el API de Edge, acurl o get_token. Por ejemplo:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
    .
  2. El servicio de Edge OAuth2 responde con un token de acceso y lo imprime en stdout. por ejemplo:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    Las utilidades acurl y get_token guardan de forma silenciosa el acceso y tokens de actualización a ~/.sso-cli (el token de actualización no se escribe en stdout.) Si usas el servicio de OAuth2 de Edge para obtener tokens, debes guardarlos para más tarde te usarás a ti mismo.

  3. Envías una solicitud a la API de Edge con el token de acceso. acurl archivos adjuntos el token automáticamente; por ejemplo:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    Si usas otro cliente HTTP, asegúrate de agregar el token de acceso. Por ejemplo:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. La API de Edge ejecuta tu solicitud y, por lo general, muestra una respuesta con datos.

Flujo de OAuth2: solicitudes posteriores

En solicitudes posteriores, no es necesario que intercambies tus credenciales por un token. En cambio, puedes incluir el token de acceso que ya tienes, siempre que no haya vencido aún:

Flujo de OAuth: solicitudes posteriores
Figura 2: Flujo de OAuth: Solicitudes posteriores

Como se muestra en la figura 2, cuando ya tienes un token de acceso:

  1. Envías una solicitud a la API de Edge con el token de acceso. acurl archivos adjuntos el token automáticamente. Si usas otras herramientas, debes agregar el token manualmente.
  2. La API de Edge ejecuta tu solicitud y, por lo general, muestra una respuesta con datos.

Flujo de OAuth2: Cuándo vence el token de acceso

Cuando venza un token de acceso (después de 12 horas), podrás usar el token de actualización para obtener uno nuevo token de acceso:

Flujo de OAuth: Actualización del token de acceso
Figura 3: Flujo de OAuth: Actualización del token de acceso

Como se muestra en la figura 3, una vez que expiró tu token de acceso:

  1. Envías una solicitud a la API de Edge, pero tu token de acceso venció.
  2. La API de Edge rechaza tu solicitud como no autorizada.
  3. Envías un token de actualización al servicio de OAuth2 de Edge. Si usas acurl, puedes hacerlo. automáticamente.
  4. El servicio de Edge de OAuth2 responde con un token de acceso nuevo.
  5. Envías una solicitud a la API de Edge con el token de acceso nuevo.
  6. La API de Edge ejecuta tu solicitud y, por lo general, muestra una respuesta con datos.

Obtén los tokens

Para obtener un token de acceso que puedas enviar a la API de Edge, puedes usar los siguientes Utilidades de Apigee, además de una utilidad como curl, realizan lo siguiente:

  • Utilidad get_token: Intercambia tus credenciales de Apigee para obtener acceso. y los tokens de actualización que puedes usar para llamar a la API de Edge.
  • Utilidad acurl: Proporciona un wrapper de conveniencia en torno a un estándar Comando curl. Construye solicitudes HTTP al perímetro API, obtiene acceso y actualiza tokens de get_token y pasa el token de acceso a la API de Edge.
  • Extremos de tokens en el servicio de OAuth2 de Edge: Intercambia tu Credenciales de Apigee para los tokens de acceso y actualización mediante una llamada a la API de Edge.

Estas utilidades intercambian las credenciales de tu cuenta de Apigee (dirección de correo electrónico y contraseña) para los tokens con las siguientes duraciones:

  • Los tokens de acceso vencen en 12 horas.
  • Los tokens de actualización vencen dentro de 30 días.

Como resultado, una vez que hayas realizado correctamente una llamada a la API con acurl o get_token, ocurrirá lo siguiente: puedes seguir usando el par de tokens durante 30 días. Luego del vencimiento, debes volver a ingresar tu credenciales y obtener tokens nuevos.

Accede a la API de Edge con OAuth2

Para acceder a la API de Edge, debes enviar una solicitud a un extremo de la API y agregar el token de acceso. Puedes hacerlo con cualquier cliente HTTP, incluida una utilidad de línea de comandos como curl, una IU basada en navegador, como Postman, o una utilidad de Apigee, como acurl.

Se describe cómo acceder a la API de Edge con acurl y curl en en las siguientes secciones.

Usa acurl

Para acceder a la API de Edge con acurl, tu solicitud inicial debe incluir tu credenciales. El servicio de Edge de OAuth2 responde con los tokens de acceso y actualización. acurl guarda los tokens de forma local.

En solicitudes posteriores, acurl usa los tokens guardados en ~/.sso-cli, por lo que que no tengas que volver a incluir tus credenciales hasta que los tokens venzan.

En el siguiente ejemplo, se muestra una solicitud acurl inicial que obtiene detalles del “ahamilton-eval” organización:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

Además de obtener detalles sobre la organización, en este ejemplo se muestra una segunda solicitud que obtenga una lista de políticas en el entorno de “helloworld” proxy de API. La segunda solicitud usa abreviando “o” para “organizaciones” en la URL.

Ten en cuenta que acurl pasa automáticamente el token de acceso en la segunda solicitud. Tú no necesitas pasar tus credenciales de usuario una vez que acurl almacene los tokens de OAuth2. Integra obtiene el token de ~/.sso-cli para las llamadas posteriores.

Si quieres obtener más información, consulta Usa acurl para acceder a la API de Edge.

Usa curl

Puedes usar curl para acceder a la API de Edge. Para hacer esto, primero debes obtener el tokens de acceso y de actualización. Puedes obtenerlos con una utilidad, como get_token o la Servicio de OAuth2 de Edge.

Una vez que hayas guardado correctamente tu token de acceso, pásalo en Encabezado Authorization de las llamadas a la API de Edge, como en el siguiente ejemplo muestra:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

El token de acceso es válido durante 12 horas a partir de su emisión. Una vez que venza el token de acceso, el token de actualización se puede usar durante 30 días para emitirlo a través de otro token de acceso sin solicitar credenciales. Apigee recomienda solicitar un nuevo token de acceso solo después de que caduque el token de referencia, en lugar de ingresando las credenciales y realizando una nueva solicitud con cada llamada a la API.

Vencimiento del token

Cuando venza el token de acceso, podrás usar el token de actualización para obtener uno nuevo sin tener que volver a enviar tus credenciales.

La forma de actualizar el token de acceso depende de la herramienta que estés usando:

  • acurl: No se requiere ninguna acción. acurl actualiza automáticamente el token de acceso. cuando envías una solicitud que contiene una desactualizada.
  • get_token: Llama a get_token para actualizar el token de acceso.
  • Servicio Edge OAuth2: Envía una solicitud que incluya lo siguiente:
    • Token de actualización
    • Se estableció el parámetro de formulario grant_type en "refresh_token"

OAuth2 para usuarios de máquinas

Puedes usar las utilidades acurl y get_token para crear secuencias de comandos de acceso automatizado a las APIs de Edge con autenticación OAuth2 para usuarios de la máquina. En el siguiente ejemplo, se muestra cómo usa get_token para solicita un token de acceso y, luego, agrega el valor del token a una llamada curl:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Como alternativa, puedes combinar la solicitud de token y la llamada a curl con la utilidad acurl. Por ejemplo:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

En ambos ejemplos, configurar el valor de -m en una cadena vacía evitará que un usuario de máquina de un código MFA.