Usa SAML con la API de administración de Edge

Edge para la nube privada v4.18.01

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, se usa la opción cURL -u para pasar credenciales de autenticación básica. Como alternativa, puedes pasar un token OAuth2 en el encabezado Bearer para hacer que la API de Edge Management llamadas. 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 inhabilitas la autenticación básica, todas secuencias de comandos (secuencias de comandos de Maven, de shell, apigeetool, etc.) que se basan en Edge Management de datos que admiten la autenticación básica ya no funcionan. 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 acceso de OAuth2 y un token de actualización. El get_token acepta tu credenciales e imprime un token de acceso válido. Si se puede actualizar un token, lo actualizará y imprimirlo. Si el token de actualización vence, se te solicitarán las credenciales del usuario.

Las tiendas de utilidades get_token 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 de OAuth2 y 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"

    donde 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.
  2. Descomprime el archivo ssocli-bundle.zip. paquete:
    &gt; descomprimir 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 ruta
  4. Configura el atributo SSO_LOGIN_URL. variable de entorno a tu URL de acceso, con el siguiente formato:
    exportar SSO_LOGIN_URL=&quot;http://edge_sso_IP_DNS:9099&quot;

    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 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 TLS correcto.

    Nota: Si aún no accediste a tu cuenta con el proveedor de identidad, se te solicitará que lo hagas.

    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 la usas con get_token para generar un token de acceso.
  6. Invoca get_token para obtener el token de acceso de OAuth2:
    &gt; get_token: -u emailAddress

    En el ejemplo anterior, emailAddress es la dirección de correo electrónico de un usuario de Edge. Se te solicita que ingreses la contraseña de un solo uso que obtuviste en el paso 3:
    Código de un solo uso (obtén uno en https://edge_sso_IP.com/passcode)
    Ingresa la contraseña si SAML está habilitado o presiona ENTER:


    Ingresa la contraseña. La utilidad get_token obtiene el acceso OAuth2. token, 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 administración de Edge como el encabezado Bearer:
    > 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 caducó, se actualizará automáticamente hasta que venza el token de actualización.

Una vez que vence el token de actualización, get_token te solicita una nueva contraseña. Tú debe ir a la URL anterior en el paso 3 y generar una contraseña nueva antes de generar una nuevo token de acceso de OAuth

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

Uso de OAuth2 con la API de administración de Apigee Edge contiene instrucciones que muestran cómo usar el API de Edge Management para obtener y actualizar tokens. También puedes usar llamadas a la API de Edge para tokens generadas 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 de OAuth2 reservada en el encabezado Authorization. La llamada imprimirá el de acceso y actualización de tokens 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'