Accede a la API de Edge con SAML

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

SAML admite un entorno de inicio de sesión único (SSO). Mediante el uso de SAML con Edge, puedes admitir el SSO para la IU y la API de Edge, además de cualquier otro servicio que proporciones y que también admita SAML.

Requisito previo: Debes habilitar SAML en al menos una organización antes de poder usarlo para acceder a la API de Edge.

Diferencias entre SAML y OAuth2

Cuando se configura SAML, usarlo es muy similar a usar OAuth2 para acceder a la API de Edge. Cuando llamas a la API de Edge, incluyes un token de acceso de OAuth2 en la solicitud.

La diferencia clave entre SAML y OAuth2 cuando se accede a la API de Edge es la forma en que se obtienen los tokens. Con SAML, debes incluir lo siguiente cuando obtengas el par de tokens:

  1. Zonas: Los usuarios de Edge para la nube pública deben hacer referencia al nombre de su zona cuando obtienen los tokens.
  2. Contraseña: Incluye una contraseña de un solo uso cuando solicites un par de tokens de acceso o actualización.

SAML usa los mismos extremos en el servicio OAuth2 de Edge y agrega el nombre de zona correspondiente.

Para obtener tokens de acceso con SAML, puede utilizar uno de los siguientes métodos, que se describen en esta sección:

Además, puedes automatizar el proceso de generación de tokens para los usuarios de máquinas, como se describe en Automatiza el proceso de generación de tokens.

Obtén tokens de acceso con get_token

Puedes usar la utilidad get_token para intercambiar tus credenciales de acceso de OAuth2 y los tokens de actualización que usas con SAML.

Para obtener un token de acceso con get_token:

  1. Configura la variable de entorno SSO_LOGIN_URL como tu URL de acceso. La URL de acceso tiene el siguiente formato:
    https://zoneName.login.apigee.com

    Por ejemplo, para una zona llamada “acme”, configura SSO_LOGIN_URL como “https://acme.login.apigee.com”, como se muestra en el siguiente ejemplo:

    export SSO_LOGIN_URL=https://acme.login.apigee.com
  2. Llama a get_token para obtener el token de acceso de OAuth2:
    get_token -u me@example.com

    Se te solicitará que visites la URL que se muestra para obtener una contraseña de un solo uso:

    Get passcode from https://acme.login.apigee.com/passcode
    [Note:  Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:

    Si no accediste recientemente a través de tu proveedor de identidad, se te pedirá que lo hagas.

    Esta URL muestra una contraseña de un solo uso que sigue siendo válida hasta que actualices la URL para obtener una contraseña nueva o uses la contraseña con get_token para generar un token de acceso. Por ejemplo:

  3. Ingresa la contraseña. La utilidad get_token obtiene los tokens de OAuth2, imprime el token de acceso en stdout y escribe los tokens de acceso y actualización en ~/.sso-cli.

  4. Llama a la API de Edge y pasa el token de acceso en el encabezado Authorization: Bearer, como se muestra en el siguiente ejemplo:
    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"

    El valor del token de acceso se puede copiar desde stdout.

    En este ejemplo, se obtienen detalles sobre la organización determinada. Para obtener una lista completa de los extremos de la API de administración, consulta la Referencia de la API de Apigee Edge.

Cuando venza tu token de acceso, podrás volver a llamar a get_token para obtener un token de acceso nuevo. Por ejemplo:

get_token -u me@example.com

No se te solicitará una contraseña nueva hasta que venza el token de actualización.

Cuando venza el token de actualización, get_token te solicitará una contraseña nueva. Debes generar una contraseña nueva antes de generar un token de acceso de OAuth2 nuevo.

Obtén tokens de acceso con el servicio OAuth2 de Edge

Puedes usar el servicio de Edge OAuth2 para obtener tokens de acceso que usas con SAML. Para autenticarte con la API de Edge, debes usar una contraseña en tu solicitud inicial a fin de obtener un par de tokens de acceso o actualización y otra vez para obtener un par de tokens nuevo.

Para obtener un par de tokens con la API de Edge, haz lo siguiente:

  1. En un navegador, ve a la siguiente URL para obtener una contraseña de un solo uso:
    https://zoneName.login.apigee.com/passcode

    Por ejemplo, para una zona llamada “acme”, dirígete a la siguiente URL:

    https://acme.login.apigee.com/passcode

    Si no accediste recientemente a través de tu proveedor de identidad, se te pedirá que lo hagas.

    Esta URL muestra una contraseña de un solo uso que actúa como tus credenciales para obtener tokens y seguirá siendo válida hasta que actualices la URL para obtener una contraseña nueva, o bien puedes usar la contraseña con get_token para generar un token de acceso. Por ejemplo:

  2. Envía una solicitud a la API de Edge, como se muestra en el siguiente ejemplo:
    curl https://zoneName.login.apigee.com/oauth/token \
          -s \
          -H "Accept: application/json" \
          -d 'grant_type=password&response_type=token&passcode=passcode'

    El passcode actúa como tus credenciales para la autorización.

    Donde:

    • El encabezado Authorization es "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (usa este valor exacto).
    • El tipo de solicitud es POST.
    • El cuerpo de la solicitud contiene lo siguiente:
      • grant_type es "password".
      • response_type es "token".
      • passcode, en el que passcode es la contraseña que se mostró en el paso anterior.

    La llamada imprime los tokens de acceso y actualización en la pantalla.

Para actualizar tu token de acceso, haz lo siguiente:

Envía una solicitud a https://zoneName.login.apigee.com/oauth/token, como se muestra en el siguiente ejemplo:

curl https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

Donde:

  • El cuerpo de la solicitud contiene lo siguiente:
    • grant_type es "refresh_token".
    • refresh_token es el valor del token de actualización.
  • El encabezado Authorization es "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (usa este valor exacto).
  • El tipo de solicitud es POST.

Accede a la API de Edge con SAML

Puedes usar herramientas como curl o la utilidad de conveniencia de Apigee acurl para acceder a la API de Edge.

Con curl, llamas a la API de Edge y pasas el token de acceso en el encabezado Authorization: Bearer, como se muestra en el siguiente ejemplo:

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

Con acurl, no necesitas especificar el encabezado Authorization. Por ejemplo:

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

En estos ejemplos, se llama a un extremo de la API de Edge que obtiene detalles sobre una organización determinada. Para obtener una lista completa de los extremos de la API de Edge, consulta la Referencia de la API de Apigee Edge.

Si deseas conocer métodos adicionales para llamar a la API, incluidas las formas de garantizar que tu token permanezca actualizado, consulta Cómo acceder a la API de Edge con OAuth2.

Usuarios de máquinas en zonas de SAML

Puedes usar las utilidades acurl y get_token a fin de crear secuencias de comandos para el acceso automatizado a las API de Edge para los usuarios de máquinas en las zonas de SAML. En el siguiente ejemplo, se muestra cómo usar get_token para solicitar un token de acceso y, luego, agregar el valor del token a una llamada a curl:

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

En el ejemplo anterior, configurar el valor de -m como una string vacía evitará que se le solicite a un usuario de máquina un código MFA. El uso de la marca --force-basic-auth anulará el mensaje estándar de una contraseña que se activa mediante solicitudes con zonas de SAML.

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

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