Usa SAML con la API de administración de Edge

Edge para la nube privada v. 4.17.09

La autenticación básica es una forma de autenticarse cuando se realizan llamadas a la API de administración de Edge. Por ejemplo, puedes realizar la siguiente solicitud de cURL a la API de administración de Edge para acceder a la información de tu organización:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

En este ejemplo, usas la opción -u de cURL para pasar credenciales de autenticación básica. Como alternativa, puedes pasar un token de OAuth2 en el encabezado Bearer para hacer llamadas a la API de Edge Management. Por ejemplo:

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

Después de habilitar SAML, tienes la opción de inhabilitar la autenticación básica. Si lo haces, ya no funcionarán todas las secuencias de comandos (secuencias de comandos de Maven, de shell, apigeetool, etc.) que dependan de las llamadas a la API de Edge Management que admiten la autenticación básica. Debes actualizar las llamadas a la API y las secuencias de comandos que usan la autenticación básica para pasar tokens de acceso de OAuth2 en el encabezado del portador.

Cómo usar get_token para obtener y actualizar tokens

La utilidad get_token intercambia tus credenciales de autenticación básica y una contraseña por un token de acceso y actualización de OAuth2. La utilidad get_token acepta tus credenciales y, luego, imprime un token de acceso válido. Si se puede actualizar un token, lo actualizará y lo imprimirá. Si vence el token de actualización, se solicitarán las credenciales del usuario.

La utilidad get_token almacena los tokens en el disco, listos para usarse cuando sea necesario. También imprime un token de acceso válido en stdout. Desde allí, puedes usar Postman o incorporarlo en una variable de entorno para usarlo en curl.

En el siguiente procedimiento, se describe cómo usar get_token para obtener un token de acceso OAuth2 para realizar llamadas a la API de Edge Management:

  1. Descarga el paquete sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    En el ejemplo anterior, edge_sso_IP_DNS es la dirección IP del nombre de DNS de la máquina que aloja el módulo de SSO de Edge. Si configuraste TLS en el SSO de Edge, usa https y el número de puerto TLS correcto.

  2. Descomprime el paquete ssocli-bundle.zip:
    unzip ssocli-bundle.zip
  3. Instala get_token en /usr/local/bin:
    ./install

    Usa la opción -b para especificar una ubicación diferente:

    ./install -b path
  4. Establece la variable de entorno SSO_LOGIN_URL en tu URL de acceso, en el siguiente formato:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    En el que edge_sso_IP_DNS es la dirección IP del nombre de DNS de la máquina que aloja el módulo de SSO de Edge. Si configuraste TLS en el SSO de Edge, usa https y el número de puerto de TLS correcto.

  5. En un navegador, ve a la siguiente URL para obtener una contraseña de un solo uso:
    http://edge_sso_IP_DNS:9099/passcode

    Si configuraste TLS en el SSO de Edge, usa https y el número de puerto de TLS correcto.

    Esta URL muestra una contraseña de un solo uso que permanece 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.

  6. Invoca get_token para obtener el token de acceso de OAuth2:
    get_token -u emailAddress

    En el comando anterior, emailAddress es la dirección de correo electrónico de un usuario de Edge. Se te solicitará que ingreses la contraseña de un solo uso que obtuviste en el paso 3:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

    Ingresa la contraseña. La utilidad get_token obtiene el token de acceso de OAuth2, lo imprime en la pantalla y lo escribe junto con el token de actualización en ~/.sso-cli.

    Puedes ingresar la contraseña en la línea de comandos con un comando get_token en el siguiente formato:

    get_token -u emailAddress -p passcode

  7. Pasa el token de acceso a una llamada a la API de Edge Management como encabezado del portador:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    Después de obtener un token de acceso nuevo por primera vez, puedes obtenerlo y pasarlo a una llamada a la API en un solo comando, como se muestra a continuación:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

    Con esta forma del comando, si el token de acceso venció, se actualiza automáticamente hasta que venza el token de actualización.

Una vez que venza el token de actualización, get_token te solicitará una nueva contraseña. Debes ir a la URL que se muestra arriba en el paso 3 y generar una contraseña nueva para poder generar un token de acceso de OAuth nuevo.

Cómo usar la API de administración para obtener y actualizar tokens

Cómo usar la seguridad de OAuth2 con la API de administración de Apigee Edge contiene instrucciones que muestran cómo usar la API de administración de Edge para obtener y actualizar tokens. También puedes usar llamadas a la API de Edge para obtener tokens generados a partir de aserciones de SAML.

La única diferencia entre las llamadas a la API documentadas en Cómo usar la seguridad de OAuth2 con la API de administración de Apigee Edge es que la URL de la llamada debe hacer referencia al nombre de tu zona. Además, para generar el token de acceso inicial, debes incluir la contraseña, como se muestra en el paso 3 del procedimiento anterior.

Por ejemplo, usa la siguiente llamada a la API para generar los tokens de acceso y actualización iniciales:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

Para la autorización, pasa una credencial de cliente OAuth2 reservada en el encabezado Authorization. La llamada imprime los tokens de acceso y actualización en la pantalla.

Para actualizar el token de acceso más adelante, usa la siguiente llamada que incluye el token de actualización:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
  -H "Accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'