Accede a la API de Edge con SAML

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

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: Debes habilitar SAML durante, al menos, a una organización antes de que puedas usarla 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 la API de Edge. Cuando llamas a la API de Edge, incluyes un token de acceso OAuth2 en tu solicitud.

La diferencia clave entre SAML y OAuth2 cuando se accede a la API de Edge está en el camino obtienes tokens. Con SAML, debes incluir lo siguiente cuando obtengas tu par de tokens:

  1. Zonas: El perímetro de los usuarios de la nube pública debe hacer referencia al nombre de su zona cuando obtengan tokens.
  2. Contraseña: Incluye una contraseña de un solo uso cuando solicites acceso o una actualización. par de tokens.

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

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

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

Cómo obtener tokens de acceso con get_token

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

Para obtener un token de acceso con get_token, sigue estos pasos:

  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”, 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 indicará que visites la URL que se muestra para obtener un código 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 firmes en el que te etiquetaron.

    Esta URL devuelve una contraseña de un solo uso que sigue siendo válida hasta que actualices esa URL para obtener un código nuevo o usar el código con get_token para generar una 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 de actualización, a ~/.sso-cli.

  4. Llama a la API de Edge y pasa el token de acceso en el 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 roles Extremos de la API, consulta Referencia de la API de Apigee Edge.

Cuando venza el token de acceso, podrás volver a llamar a get_token para obtener un acceso 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 para poder generar un nuevo token de acceso de OAuth2.

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

Puedes usar el servicio de Edge OAuth2 para obtener los tokens de acceso que usas con SAML. Cómo realizar la autenticación por tu cuenta con la API de Edge, debes usar una contraseña en tu solicitud inicial para obtener un acceso o una actualización par de tokens y otra vez para obtener otro 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", 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 pedirá que lo firmes en el que te etiquetaron.

    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 actualices la URL para obtén una contraseña nueva o puedes usar la contraseña con get_token para generar una 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.

    Aquí:

    • El encabezado Authorization es "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0". (usa este el valor exacto).
    • El tipo de solicitud es POST.
    • El cuerpo de la solicitud contiene lo siguiente:
      • grant_type es "contraseña".
      • 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.

Sigue estos pasos para actualizar tu token de acceso:

Enviar 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'

Aquí:

  • 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 el 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 a acceder a la API de Edge.

Con curl, llamas a la API de Edge y pasas el token de acceso en la 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 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 métodos adicionales de llamada a la API, incluidas las formas de garantizar que tu token permanezca reciente, consulta Accede a la API de Edge con OAuth2.

Usuarios de máquinas en zonas SAML

Puedes usar las utilidades acurl y get_token para crear secuencias de comandos de acceso automatizado a las APIs de Edge para los usuarios de máquinas en zonas de SAML. 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 '' --force-basic-auth)
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

En el ejemplo anterior, configurar el valor de -m en una cadena vacía evitará que un usuario de máquina de un código MFA. Si usas la marca --force-basic-auth, se anulará el mensaje estándar de una contraseña activado por solicitudes con zonas SAML.

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 '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'