Accede a la API de Edge con SAML

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

SAML admite un entorno de inicio de sesión único (SSO). Si usas 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 para al menos una organización antes de poder usarlo para acceder a la API de Edge.

Diferencias entre SAML y OAuth2

Una vez que se configura SAML, su uso es muy similar al de OAuth2 para acceder a la API de Edge. Cuando llamas a la API de Edge, incluyes un token de acceso de OAuth2 en tu solicitud.

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

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

SAML usa los mismos extremos en el servicio OAuth2 de Edge, con la adición del nombre de zona adecuado.

Para obtener tokens de acceso con SAML, puedes usar 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 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 por tokens de acceso y actualización de OAuth2 que usas con SAML.

Para obtener un token de acceso con get_token, haz lo siguiente:

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

    Por ejemplo, para una zona llamada “acme”, establece SSO_LOGIN_URL en “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 solicitará que lo hagas.

    Esta URL muestra una contraseña de un solo uso que sigue siendo válida hasta que actualizas esa URL para obtener una contraseña nueva o usas 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 Authorization: Bearer encabezado, 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 de 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 el token de acceso, puedes volver a llamar a get_token para obtener uno nuevo token. 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 poder generar un token de acceso de OAuth2 nuevo.

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

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

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

  1. En un navegador, navega 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”, ve a la siguiente URL:

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

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

    Esta URL muestra una contraseña de un solo uso que actúa como tus credenciales para obtener tokens y sigue siendo válida hasta que actualizas la URL para obtener una contraseña nueva, o 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, donde 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 acurl de Apigee para acceder a la API de Edge.

Con curl, llamas a la API de Edge y pasas el token de acceso en el Authorization: Bearer encabezado, 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 la 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.

Para obtener métodos adicionales para llamar a la API, incluidas formas de asegurarte de que tu token permanezca actualizado, consulta Accede a la API de Edge con OAuth2.

Usuarios de máquinas en zonas de SAML

Puedes usar las utilidades acurl y get_token para crear secuencias de comandos de acceso automatizado a las APIs de Edge para usuarios de máquinas en 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 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, si se establece el valor de -m en una cadena vacía, se evitará que se le solicite un código de MFA a un usuario de máquina. Si usas la marca --force-basic-auth, se anulará la solicitud estándar de una contraseña activada por solicitudes con zonas de SAML.

Como alternativa, puedes combinar la solicitud de token y la llamada curl con 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/...'