Cuando usas un IDP externo con la API de Edge, el proceso que usas para obtener tokens de acceso y tokens de actualización de OAuth2 de la interacción con el IDP 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 puede admitir la automatización de tareas de desarrollo comunes, como la automatización de pruebas o la 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 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 dentro de las organizaciones que tienen un IDP habilitado. 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 Management de Edge.
Existen dos maneras 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 tengan 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 dentro de 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 la máquina con la IU de Edge y la API de administración de Edge.
Cuando crees 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, sigue estos pasos:
- Usa el siguiente comando de
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
propiedad
SSO_ADMIN_NAMEen 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, como se especifica en la propiedad
SSO_ADMIN_SECRETdel 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
propiedad
- Accede a la IU de Edge y agrega el correo electrónico del usuario de máquina a tus organizaciones, y asigna el usuario de máquina al rol necesario. Consulta Agrega 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
utilidad apigee-ssoadminapi.sh.
Para crear un usuario de máquina con la API de administración, sigue estos pasos:
- Usa el siguiente comando
curlpara obtener un token para el usuariossoadmin, el nombre de usuario de la cuenta de administrador deapigee-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 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 pasa 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 la máquina en los pasos posteriores.
- Accede a la IU de Edge.
- Agrega el correo electrónico del usuario de máquina a tus organizaciones y asígnale el rol necesario. Consulta Agrega 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.
Sigue estos pasos para obtener tokens de OAuth2 para el usuario de máquina:
- 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 encabezado
Bearer, 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'