Usa SAML con tareas automáticas

Edge for Private Cloud v4.18.05

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

Sin embargo, tu entorno de desarrollo puede admitir la automatización para tareas comunes de desarrollo. como automatización de pruebas o 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/pegar una contraseña desde un navegador.

Edge admite la generación automática de tokens mediante el uso de usuarios de máquinas. Un usuario de máquina puede Obtener tokens de OAuth2 sin tener que especificar una contraseña Eso significa que puedes automatizar completamente el proceso de obtención y actualización de tokens de OAuth2 mediante la API de Edge Management

Crea un usuario de máquina

Usa el apigee-ssoadminapi.sh para crear un usuario de máquina en una organización de SAML. Consulta Uso apigee-ssoadminapi.sh para más opciones. Puede crear un solo usuario de máquina para que lo usen todos sus organizaciones o crear un usuario de máquina diferente para cada organización.

El usuario de la máquina se crea y almacena en el almacén de datos de Edge, no en tu identidad de SAML proveedor. Por lo tanto, no es tu responsabilidad mantener al usuario de la máquina usando Edge IU y API de Edge Management

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

Para crear un usuario de máquina, sigue estos pasos:

  1. Usa el siguiente comando de apigee-ssoadminapi.sh para crear el usuario de 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

    Aquí:

    • SSO_ADMIN_NAME es el nombre de usuario del administrador definido por el 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 del administrador que especifica el La propiedad SSO_ADMIN_SECRET en el archivo de configuración.
    • En este ejemplo, puedes omitir los valores para --port y --ssl porque el módulo apigee-sso usa la configuración de 9099 para --port y http para --ssl. Si el la instalación no usa estos valores predeterminados, especifícalos según corresponda.

  2. Acceder a la IU de Edge y agregar el correo electrónico del usuario de la máquina a tus organizaciones y asignar al usuario de la máquina al rol necesario. Consulta Agrega usuarios globales para obtener más información más.

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

Usa la API de Edge para obtener y actualizar los tokens de OAuth2. Para ello, pasa los tokens 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 inicial y 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 -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Guarda los tokens para usarlos más adelante.

  2. Pasa el token de acceso a una llamada a la API de Edge Management como encabezado del portador:
    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 tarde, usa la siguiente llamada que incluye la actualización token:
    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'

Crear un usuario de máquina con Edge API de Management

Puedes crear un usuario de máquina con la API de administración de Edge en lugar de usar el apigee-ssoadminapi.sh.

Para crear un usuario de máquina, sigue estos pasos:

  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"

    En el ejemplo anterior, SSO_ADMIN_SECRET es la contraseña de administrador que estableciste cuando instalaste la app. apigee-sso según lo especifica la propiedad SSO_ADMIN_SECRET en el de configuración de Terraform.

    Este comando muestra un token que necesitarás para la próxima llamada.

  2. Usa el siguiente comando curl para crear el usuario de máquina y pasa el token que 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 de usuario de la máquina en pasos posteriores.

  3. Acceder a la IU de Edge y agregar el correo electrónico del usuario de la máquina a tus organizaciones y asignar al usuario de la máquina al rol necesario. Consulta Agrega usuarios globales para obtener más información.