Usa SAML con tareas automáticas

Edge para la nube privada v4.18.01

Cuando usas SAML con la API de Edge, el proceso que usas para obtener acceso a OAuth2 y tokens de actualización de la aserción de SAML se denomina flujo de contraseña. Con el flujo de contraseña, usas un navegador para obtener una contraseña de un solo uso que, luego, usas para obtener tokens de OAuth2.

Sin embargo, tu entorno de desarrollo podría admitir la automatización de tareas de desarrollo comunes, como la automatización de pruebas o la integración continua/implementación continua (CI/CD). Para automatizar estas tareas cuando SAML está habilitado, necesitas una forma de obtener y actualizar tokens de OAuth2 sin tener que copiar o pegar una contraseña desde un navegador.

Edge admite la generación automática de tokens a través del uso de usuarios de máquinas. Un usuario de máquina puede obtener tokens de OAuth2 sin tener que especificar una contraseña. Esto significa que puedes automatizar por completo el proceso de obtención y actualización de tokens de OAuth2 con la API de administración de Edge.

Crea un usuario de máquina

Usa la utilidad apigee-ssoadminapi.sh para crear un usuario de máquina para una organización de SAML. Consulta Cómo usar apigee-ssoadminapi.sh para obtener más información. Puedes crear un usuario de máquina único que usen todas tus organizaciones, o bien crear un usuario de máquina independiente para cada organización.

El usuario de la máquina se crea y se almacena en el almacén de datos de Edge, no en tu proveedor de identidad de SAML. Por lo tanto, no eres responsable de mantener al usuario de la máquina con la IU de Edge ni la API de administración de Edge.

Cuando crees el usuario de la máquina, debes especificar una dirección de correo electrónico y una contraseña. Después de crear el usuario de la máquina, debes asignarlo a una o más organizaciones.

Para crear un usuario de máquina, haz lo siguiente:

  1. Usa el siguiente comando apigee-ssoadminapi.sh para crear el usuario de la máquina:
    > apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME --secret SSO_ADMIN_SECRET --host edge_sso_IP_or_DNS -u machine_user_email -p machine_user_password

    donde:
    • SSO_ADMIN_NAME es el nombre de usuario de administrador que define la propiedad SSO_ADMIN_NAME en el archivo de configuración que se usa para configurar el módulo de SSO de Edge. El valor predeterminado es ssoadmin.
    • SSO_ADMIN_SECRET es la contraseña de administrador, como se especifica en la propiedad SSO_ADMIN_SECRET del archivo de configuración.

      En este ejemplo, puedes omitir los valores de --port y --ssl porque el módulo apigee-sso usa los valores predeterminados de 9099 para --port y http para --ssl. Si tu instalación no usa estos valores predeterminados, especifícalos según corresponda.
  2. Accede a la IU de Edge, agrega el correo electrónico del usuario de la máquina a tus organizaciones y asígnale el rol necesario. Consulta Cómo agregar usuarios globales para obtener más información.

Obtén y actualiza el token de usuario de la máquina

Usa la API de Edge para obtener y actualizar tokens de OAuth2 pasando las credenciales del usuario de la máquina, en lugar de una contraseña.

Para obtener tokens de OAuth2 para el usuario de la máquina, haz lo siguiente:

  1. 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 /
    http://edge_sso_IP_DNS:9099/oauth/token -s /
    -d 'grant_type=password&username=m_user_email&password=m_user_password
    '
    La llamada imprime los tokens de acceso y actualización en la pantalla. Guarda los tokens para usarlos más adelante.
  2. 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" http://ms_IP_DNS:8080/v1/organizations/orgName

    donde orgName es el nombre de la organización que contiene al usuario de la máquina.
  3. 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 /
    http://edge_sso_IP_DNS:9099/oauth/token /
    -d 'grant_type=refresh_token&refresh_token=refreshToken'

Crea un usuario de máquina con la API de administración de Edge

Puedes crear un usuario de máquina con la API de administración de Edge en lugar de usar la utilidad apigee-ssoadminapi.sh. Para crear un usuario de máquina, haz lo siguiente:

  1. Usa el siguiente comando cURL para obtener un token para el usuario ssoadmin, el nombre de usuario de la cuenta de administrador de apigee-sso:
    > curl "http://edge_sso_IP_DNS:9099/oauth/token" -i -X POST /
    -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' /
    -d "response_type=token" -d "grant_type=client_credentials" /
    --data-urlencode "client_secret=SSO_ADMIN_SECRET" /
    --data-urlencode "client_id=ssoadmin"


    donde SSO_ADMIN_SECRET es la contraseña de administrador que estableciste cuando instalaste apigee-sso como se especifica en la propiedad SSO_ADMIN_SECRET del archivo de configuración.

    Este comando muestra un token que necesitas para realizar la siguiente llamada.
  2. Usa el siguiente comando cURL para crear el usuario de máquina y pasar el token que recibiste en el paso anterior:
    > curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST /
    -H "Accept: application/json" -H "Content-Type: application/json" /
    -d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' /
    -H "Authorization: Bearer token"


    Necesitarás la contraseña del usuario de máquina en pasos posteriores.
  3. Accede a la IU de Edge, agrega el correo electrónico del usuario de la máquina a tus organizaciones y asígnale el rol necesario. Consulta Cómo agregar usuarios globales para obtener más información.