Aufgaben für externe IdPs automatisieren

Wenn Sie einen externen IDP mit der Edge API verwenden, wird der Prozess, mit dem Sie OAuth2-Zugriffs- und Aktualisierungstokens aus der IDP-Interaktion abrufen, als Sicherheitscode-Ablauf bezeichnet. Beim Sicherheitscode-Vorgang verwenden Sie einen Browser, um einen einmaligen Sicherheitscode abzurufen, mit dem Sie dann OAuth2-Tokens abrufen.

Ihre Entwicklungsumgebung unterstützt jedoch möglicherweise die Automatisierung gängiger Entwicklungsaufgaben, z. B. die Testautomatisierung oder CI/CD. Wenn Sie diese Aufgaben automatisieren möchten, wenn ein externer IDP aktiviert ist, benötigen Sie eine Möglichkeit, OAuth2-Tokens abzurufen und zu aktualisieren, ohne einen Passcode aus einem Browser kopieren und einfügen zu müssen.

Edge unterstützt die automatisierte Tokengenerierung durch die Verwendung von Maschinen-Nutzern in Organisationen, für die ein IdP aktiviert ist. Ein Maschinennutzer kann OAuth2-Tokens abrufen, ohne einen Passcode angeben zu müssen. Das bedeutet, dass Sie den Prozess zum Abrufen und Aktualisieren von OAuth2-Tokens mithilfe der Edge Management API vollständig automatisieren können.

Es gibt zwei Möglichkeiten, einen Maschinennutzer für eine IDP-fähige Organisation zu erstellen:

Diese Methoden werden in den folgenden Abschnitten beschrieben.

Sie können keinen Maschinennutzer für Organisationen erstellen, die keinen externen IdP aktiviert haben.

Maschinennutzer mit apigee-ssoadminapi.sh erstellen

Verwenden Sie das Dienstprogramm apigee-ssoadminapi.sh, um einen Maschinennutzer in einer IDP-fähigen Organisation zu erstellen. Weitere Informationen finden Sie unter apigee-ssoadminapi.sh verwenden. Sie können einen einzelnen Maschinennutzer erstellen, der von allen Ihren Organisationen verwendet wird, oder für jede Organisation einen separaten Maschinennutzer erstellen.

Der Maschinennutzer wird im Edge-Datenspeicher erstellt und gespeichert, nicht in Ihrem IDP. Daher sind Sie nicht für die Verwaltung des Maschinennutzers über die Edge-Benutzeroberfläche und die Edge Management API verantwortlich.

Wenn Sie den Maschinennutzer erstellen, müssen Sie eine E-Mail-Adresse und ein Passwort angeben. Nachdem Sie den Maschinennutzer erstellt haben, weisen Sie ihn einer oder mehreren Organisationen zu.

So erstellen Sie einen Maschinennutzer mit apigee-ssoadminapi.sh:

  1. Verwenden Sie den folgenden apigee-ssoadminapi.sh-Befehl, um den Maschinennutzer zu erstellen:
    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

    Wobei:

    • SSO_ADMIN_NAME ist der Administrator-Nutzername, der durch das Attribut SSO_ADMIN_NAME in der Konfigurationsdatei definiert ist, die zum Konfigurieren des Apigee-SSO-Moduls verwendet wird. Der Standardwert ist ssoadmin.
    • SSO_ADMIN_SECRET ist das Administratorpasswort, das durch das Attribut SSO_ADMIN_SECRET in der Konfigurationsdatei angegeben ist.

      In diesem Beispiel können Sie die Werte für --port und --ssl weglassen, da das Modul apigee-sso die Standardwerte 9099 für --port und http für --ssl verwendet. Wenn Ihre Installation diese Standardwerte nicht verwendet, geben Sie sie entsprechend an.

  2. Melden Sie sich in der Edge-Benutzeroberfläche an, fügen Sie die E-Mail-Adresse des Maschinennutzers zu Ihren Organisationen hinzu und weisen Sie dem Maschinennutzer die erforderliche Rolle zu. Weitere Informationen finden Sie unter Globale Nutzer hinzufügen.

Maschinennutzer mit der Edge Management API erstellen

Sie können einen technischen Nutzer mit der Edge Management API erstellen, anstatt das Dienstprogramm apigee-ssoadminapi.sh zu verwenden.

So erstellen Sie einen Maschinennutzer mit der Management API:

  1. Verwenden Sie den folgenden curl-Befehl, um ein Token für den Nutzer ssoadmin abzurufen, den Nutzernamen des Administratorkontos für 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"

    Dabei ist SSO_ADMIN_SECRET das Administratorpasswort, das Sie bei der Installation von apigee-sso festgelegt haben, wie im Attribut SSO_ADMIN_SECRET in der Konfigurationsdatei angegeben.

    Mit diesem Befehl wird ein Token angezeigt, das Sie für den nächsten Aufruf benötigen.

  2. Verwenden Sie den folgenden curl-Befehl, um den Maschinennutzer zu erstellen. Übergeben Sie dabei das Token, das Sie im vorherigen Schritt erhalten haben:
    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"

    Sie benötigen das Passwort des Maschinennutzers in späteren Schritten.

  3. Melden Sie sich in der Edge-Benutzeroberfläche an.
  4. Fügen Sie die E-Mail-Adresse des Maschinen-Nutzers zu Ihren Organisationen hinzu und weisen Sie dem Maschinen-Nutzer die erforderliche Rolle zu. Weitere Informationen finden Sie unter Globale Nutzer hinzufügen.

Maschinennutzer-Tokens abrufen und aktualisieren

Verwenden Sie die Edge API, um OAuth2-Tokens abzurufen und zu aktualisieren. Übergeben Sie dazu die Anmeldedaten des Maschinennutzers anstelle eines Sicherheitscodes.

So rufen Sie OAuth2-Tokens für den Maschinennutzer ab:

  1. Verwenden Sie den folgenden API-Aufruf, um die ersten Zugriffs- und Aktualisierungstokens zu generieren:
    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'

    Speichern Sie die Tokens zur späteren Verwendung.

  2. Übergeben Sie das Zugriffstoken wie im folgenden Beispiel gezeigt als Bearer-Header an einen Edge Management API-Aufruf:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    Dabei ist org_name der Name der Organisation, die den Maschinennutzer enthält.

  3. Wenn Sie das Zugriffstoken später aktualisieren möchten, verwenden Sie den folgenden Aufruf, der das Aktualisierungstoken enthält:
    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'