Quando utilizzi un IDP esterno con l'API Edge, la procedura che utilizzi per ottenere i token di accesso e di aggiornamento OAuth2 dall'interazione con l'IDP è chiamata flusso del passcode. Con il flusso del passcode, utilizzi un browser per ottenere un passcode monouso che poi utilizzi per ottenere i token OAuth2.
Tuttavia, il tuo ambiente di sviluppo potrebbe supportare l'automazione per le attività di sviluppo comuni, come l'automazione dei test o CI/CD. Per automatizzare queste attività quando è abilitato un IDP esterno, devi avere un modo per ottenere e aggiornare i token OAuth2 senza dover copiare/incollare un passcode da un browser.
Edge supporta la generazione automatica di token tramite l'utilizzo di utenti macchina all'interno delle organizzazioni in cui è abilitato un IDP. Un utente macchina può ottenere i token OAuth2 senza dover specificare un passcode. Ciò significa che puoi automatizzare completamente la procedura di ottenimento e aggiornamento dei token OAuth2 utilizzando l'API di gestione Edge.
Esistono due modi per creare un utente macchina per un'organizzazione con IDP abilitato:
Ciascuno di questi metodi è descritto nelle sezioni seguenti.
Non puoi creare un utente macchina per le organizzazioni che non hanno abilitato un IDP esterno.
Creare un utente macchina con apigee-ssoadminapi.sh
Utilizza l'utilità apigee-ssoadminapi.sh
per creare un utente macchina all'interno di un'organizzazione con IDP abilitato. Per ulteriori informazioni, consulta la pagina Utilizzare
apigee-ssoadminapi.sh. Puoi creare un singolo utente macchina utilizzato da tutte le tue organizzazioni o creare un utente macchina separato per ogni organizzazione.
L'utente macchina viene creato e archiviato nel datastore Edge, non nel tuo IDP. Pertanto, non sei responsabile della manutenzione dell'utente macchina utilizzando l'UI Edge e l'API di gestione Edge.
Quando crei l'utente macchina, devi specificare un indirizzo email e una password. Dopo aver creato l'utente macchina, lo assegni a una o più organizzazioni.
Per creare un utente macchina con apigee-ssoadminapi.sh:
- Utilizza il seguente comando
apigee-ssoadminapi.shper creare l'utente macchina: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
Dove:
- SSO_ADMIN_NAME è il nome utente amministratore definito dalla proprietà
SSO_ADMIN_NAMEnel file di configurazione utilizzato per configurare il modulo Apigee SSO. Il valore predefinito èssoadmin. - SSO_ADMIN_SECRET è la password di amministratore specificata dalla
SSO_ADMIN_SECRETproprietà nel file di configurazione.In questo esempio, puoi omettere i valori di
--porte--sslperché il moduloapigee-ssoutilizza i valori predefiniti 9099 per--porte http per--ssl. Se la tua installazione non utilizza questi valori predefiniti, specificali in base alle esigenze.
- SSO_ADMIN_NAME è il nome utente amministratore definito dalla proprietà
- Accedi all'UI Edge, aggiungi l'indirizzo email dell'utente macchina alle tue organizzazioni e assegna all'utente macchina il ruolo necessario. Per ulteriori informazioni, consulta la pagina Aggiungere utenti globali.
Creare un utente macchina con l'API di gestione Edge
Puoi creare un utente macchina utilizzando l'API di gestione Edge anziché l'
apigee-ssoadminapi.sh utilità.
Per creare un utente macchina con l'API di gestione:
- Utilizza il seguente
curlcomando per ottenere un token per l'utentessoadmin, il nome utente dell'account amministratore perapigee-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"
Dove SSO_ADMIN_SECRET è la password di amministratore che hai impostato quando hai installato
apigee-ssocome specificato dalla proprietàSSO_ADMIN_SECRETnel file di configurazione.Questo comando mostra un token che ti serve per effettuare la chiamata successiva.
- Utilizza il seguente
curlcomando per creare l'utente macchina, passando il token che hai ricevuto nel passaggio precedente: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"Avrai bisogno della password dell'utente macchina nei passaggi successivi.
- Accedi all'UI Edge.
- Aggiungi l'indirizzo email dell'utente macchina alle tue organizzazioni e assegna all'utente macchina il ruolo necessario. Per ulteriori informazioni, consulta la pagina Aggiungere utenti globali.
Ottenere e aggiornare i token dell'utente macchina
Utilizza l'API Edge per ottenere e aggiornare i token OAuth2 passando le credenziali dell'utente macchina anziché un passcode.
Per ottenere i token OAuth2 per l'utente macchina:
- Utilizza la seguente chiamata API per generare i token di accesso e di aggiornamento iniziali:
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'
Salva i token per un utilizzo successivo.
- Passa il token di accesso a una chiamata API di gestione Edge come intestazione
Bearer, come mostrato nell'esempio seguente:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
Dove org_name è il nome dell'organizzazione che contiene l'utente macchina.
- Per aggiornare in un secondo momento il token di accesso, utilizza la seguente chiamata che include il token di aggiornamento:
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'