Cuando se usa un IDP externo con la API de Edge, el proceso que se usa para obtener tokens de acceso y actualización de OAuth2 de la interacción del IDP se denomina flujo de código de acceso. Con el flujo de código de acceso, 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 para tareas de desarrollo comunes, como la automatización de pruebas o CI/CD. Para automatizar estas tareas cuando se habilita un IDP externo, necesitas una forma de obtener y actualizar tokens de OAuth2 sin tener que copiar y pegar un código de acceso desde un navegador.
Edge admite la generación automática de tokens mediante el uso de usuarios de máquinas en organizaciones que tienen habilitado un IDP. Un usuario de máquina puede obtener tokens de OAuth2 sin tener que especificar un código de acceso. Eso 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.
Existen dos formas de crear un usuario de máquina para una organización habilitada para IDP:
Cada uno de estos métodos se describe en las siguientes secciones.
No puedes crear un usuario de máquina para organizaciones que no hayan habilitado un IDP externo.
Crea un usuario de máquina con apigee-ssoadminapi.sh
Usa la utilidad apigee-ssoadminapi.sh
para crear un usuario de máquina en una organización habilitada para IDP. Consulta Usa
apigee-ssoadminapi.sh para obtener más información. Puedes crear un solo usuario de máquina que usen todas tus organizaciones o crear un usuario de máquina independiente para cada organización.
El usuario de máquina se crea y almacena en el almacén de datos de Edge, no en tu IDP. Por lo tanto, no eres responsable de mantener el usuario de máquina con la IU de Edge y la API de administración de Edge.
Cuando creas el usuario de máquina, debes especificar una dirección de correo electrónico y una contraseña. Después de crear el usuario de máquina, lo asignas a una o más organizaciones.
Para crear un usuario de máquina con apigee-ssoadminapi.sh, haz lo siguiente:
- Usa el siguiente comando
apigee-ssoadminapi.shpara 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
Donde:
- SSO_ADMIN_NAME es el nombre de usuario de administrador definido por la
SSO_ADMIN_NAMEpropiedad en el archivo de configuración que se usa para configurar el módulo de SSO de Apigee. El valor predeterminado esssoadmin. - SSO_ADMIN_SECRET es la contraseña de administrador que se especifica en la
SSO_ADMIN_SECRETpropiedad del archivo de configuración.En este ejemplo, puedes omitir los valores de
--porty--sslporque el móduloapigee-ssousa los valores predeterminados de 9099 para--porty http para--ssl. Si tu instalación no usa estos valores predeterminados, especifícalos según corresponda.
- SSO_ADMIN_NAME es el nombre de usuario de administrador definido por la
- Accede a la IU de Edge, agrega el correo electrónico del usuario de máquina a tus organizaciones y asigna el usuario de máquina a la función necesaria. Consulta Cómo agregar usuarios globales para obtener más información.
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
apigee-ssoadminapi.sh utilidad.
Para crear un usuario de máquina con la API de administración, haz lo siguiente:
- Usa el siguiente
curlcomando para obtener un token para elssoadminusuario, el nombre de usuario de la cuenta de administrador paraapigee-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-ssocomo se especifica en la propiedadSSO_ADMIN_SECRETdel archivo de configuración.Este comando muestra un token que necesitas para realizar la siguiente llamada.
- Usa el siguiente comando
curlpara 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.
- Accede a la IU de Edge.
- Agrega el correo electrónico del usuario de máquina a tus organizaciones y asigna el usuario de máquina a la función necesaria. Consulta Cómo agregar usuarios globales para obtener más información.
Obtén y actualiza tokens de usuario de máquina
Usa la API de Edge para obtener y actualizar tokens de OAuth2 pasando las credenciales del usuario de máquina, en lugar de una contraseña.
Para obtener tokens de OAuth2 para el usuario de máquina, haz lo siguiente:
- 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'
Guarda los tokens para usarlos más adelante.
- Pasa el token de acceso a una llamada a la API de administración de Edge como el
Bearerencabezado, como se muestra en el siguiente ejemplo:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
Donde org_name es el nombre de la organización que contiene el usuario de máquina.
- 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'