Cuando usas un IDP externo con la API de Edge, el proceso que usas para obtener OAuth2 Los tokens de acceso y actualización de la interacción del IdP se denomina flujo de contraseña. Con la de contraseña, usas un navegador para obtener una contraseña de un solo uso que, luego, utilizas para obtener OAuth2. tokens.
Sin embargo, tu entorno de desarrollo puede admitir la automatización para tareas comunes de desarrollo. 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/pegar una contraseña de un navegador.
Edge admite la generación automatizada de tokens mediante el 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 Eso significa que puedes automatizar completamente el proceso de obtención y actualización de tokens de OAuth2 mediante la API de Edge Management
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 tienen un IdP externo habilitado.
Crea un usuario de máquina con apigee-ssoadminapi.sh
Usa el apigee-ssoadminapi.sh
para crear un usuario de máquina dentro de una organización habilitada para IdP. Consulta Uso
apigee-ssoadminapi.sh para más opciones. Puede crear un solo usuario de máquina
para que lo usen todos
a tus 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 IdP. Por lo tanto, No se encargan de mantener al usuario de la máquina mediante la IU y la administración de Edge. en la API de Cloud.
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 con apigee-ssoadminapi.sh
, haz lo siguiente:
- 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
QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?
Aquí:
- SSO_ADMIN_NAME es el nombre de usuario del administrador definido por el
La propiedad
SSO_ADMIN_NAME
en el archivo de configuración que se usa para configurar la Módulo de SSO de Apigee. El valor predeterminado esssoadmin
. - 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óduloapigee-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.
- SSO_ADMIN_NAME es el nombre de usuario del administrador definido por el
La propiedad
- 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 Agregar usuarios globales para más.
Crea 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 con la API de Management, haz lo siguiente:
- Usa el siguiente comando
curl
para 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"
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 propiedadSSO_ADMIN_SECRET
en el de configuración de Terraform.Este comando muestra un token que necesitarás para la próxima llamada.
- 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.
- Accede a la IU de Edge.
- Agrega el correo electrónico del usuario de la máquina a tus organizaciones y asígnalo al rol necesario. Consulta Agregar usuarios globales para obtener más información.
Obtener y actualizar tokens de usuario de 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:
- 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.
- Pasa el token de acceso a una llamada a la API de Edge Management como encabezado
Bearer
, como 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 al usuario de la 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'