Automatizza le attività per gli IdP esterni

Quando utilizzi un IdP esterno con l'API Edge, il processo utilizzato per ottenere i token di accesso e di aggiornamento OAuth2 dall'interazione IdP è chiamato flusso di passcode. Con il flusso di passcode, utilizzi un browser per ottenere un passcode una-tantum da utilizzare per ottenere i token OAuth2.

Tuttavia, il tuo ambiente di sviluppo potrebbe supportare l'automazione per attività di sviluppo comuni, come l'automazione dei test o CI/CD. Per automatizzare queste attività quando è abilitato un IdP esterno, è necessario 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 delle macchine all'interno di organizzazioni per cui è abilitato un IdP. Un utente delle macchine può ottenere i token OAuth2 senza dover specificare un passcode. Ciò significa che puoi automatizzare completamente il processo di recupero e aggiornamento dei token OAuth2 utilizzando l'API Edge Management.

Esistono due modi per creare un utente della macchina per un'organizzazione abilitata all'IdP:

Ognuno di questi metodi è descritto nelle sezioni seguenti.

Impossibile creare un utente macchina per organizzazioni per cui non è abilitato un IdP esterno.

Crea un utente della macchina con apigee-ssoadminapi.sh

Utilizza l'utilità apigee-ssoadminapi.sh per creare un utente della macchina all'interno di un'organizzazione abilitata all'IdP. Per saperne di più, consulta la pagina Utilizzo di apigee-ssoadminapi.sh. Puoi creare un singolo utente della macchina utilizzato da tutte le tue organizzazioni oppure creare un utente della macchina separato per ogni organizzazione.

L'utente della macchina viene creato e archiviato nel datastore Edge, non nel tuo IdP. Di conseguenza, non sei responsabile della gestione dell'utente della macchina utilizzando l'interfaccia utente perimetrale e l'API di gestione perimetrale.

Quando crei l'utente della macchina, devi specificare un indirizzo email e una password. Dopo aver creato l'utente della macchina, devi assegnarlo a una o più organizzazioni.

Per creare un utente della macchina con apigee-ssoadminapi.sh:

  1. Utilizza il seguente comando apigee-ssoadminapi.sh per creare l'utente della 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

    QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?

    Dove:

    • SSO_ADMIN_NAME è il nome utente dell'amministratore definito dalla proprietà SSO_ADMIN_NAME nel file di configurazione utilizzato per configurare il modulo SSO di Apigee. Il valore predefinito è ssoadmin.
    • SSO_ADMIN_SECRET è la password amministratore specificata dalla proprietà SSO_ADMIN_SECRET nel file di configurazione.

      In questo esempio puoi omettere i valori di --port e --ssl perché il modulo apigee-sso utilizza i valori predefiniti di 9099 per --port e http per --ssl. Se l'installazione non utilizza questi valori predefiniti, specificali in modo appropriato.

  2. Accedi all'interfaccia utente di Edge e aggiungi l'indirizzo email dell'utente della macchina alle tue organizzazioni, quindi assegna all'utente della macchina il ruolo necessario. Per saperne di più, consulta Aggiungere utenti globali.

Crea un utente macchina con l'API Edge Management

Puoi creare un utente della macchina utilizzando l'API Edge Management anziché l'utilità apigee-ssoadminapi.sh.

Per creare un utente della macchina con l'API di gestione:

  1. Utilizza il seguente comando curl per ottenere un token per l'utente ssoadmin, il nome utente dell'account amministratore per 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"

    Dove SSO_ADMIN_SECRET è la password amministratore che hai impostato quando hai installato apigee-sso, come specificato dalla proprietà SSO_ADMIN_SECRET nel file di configurazione.

    Questo comando mostra un token che ti servirà per effettuare la chiamata successiva.

  2. Utilizza il seguente comando curl per creare l'utente della 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"

    Ti servirà nei passaggi successivi.

  3. Accedi all'interfaccia utente Edge.
  4. Aggiungi l'indirizzo email dell'utente della macchina alle tue organizzazioni e assegna all'utente della macchina il ruolo necessario. Per saperne di più, consulta Aggiungere utenti globali.

Ottenere e aggiornare i token degli utenti delle macchine

Utilizza l'API Edge per ottenere e aggiornare i token OAuth2 passando le credenziali dell'utente della macchina, anziché un passcode.

Per ottenere i token OAuth2 per l'utente della macchina:

  1. Utilizza la seguente chiamata API per generare i token di accesso e 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 utilizzarli in seguito.

  2. Passa il token di accesso a una chiamata API di gestione perimetrale come intestazione Bearer, come illustrato 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 della macchina.

  3. Per aggiornare in un secondo momento il token di accesso, utilizza la chiamata seguente 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'