SAML mit der Edge Management API verwenden

Edge for Private Cloud Version 4.17.09

Basic Auth ist eine Möglichkeit zur Authentifizierung, wenn Aufrufe an die Edge-Verwaltungs-API gesendet werden. Sie können beispielsweise die folgende cURL-Anfrage an die Edge Management API senden, um auf Informationen über Ihre Organisation zuzugreifen:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

In diesem Beispiel verwenden Sie die Option cURL -u, um Anmeldedaten für die Basisauthentifizierung zu übergeben. Alternativ können Sie ein OAuth2-Token im Bearer-Header übergeben, um API-Aufrufe für die Edge-Verwaltung auszuführen. Beispiel:

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

Nachdem Sie SAML aktiviert haben, können Sie optional die Basisauthentifizierung deaktivieren. Wenn Sie die Basisauthentifizierung deaktivieren, funktionieren alle Skripts (Maven-Skripts, Shell-Skripts, apigeetool usw.), die auf Edge-Management-API-Aufrufen basieren, die die Basisauthentifizierung unterstützen, nicht mehr. Sie müssen alle API-Aufrufe und Skripts aktualisieren, die die Basisauthentifizierung verwenden, um OAuth2-Zugriffstokens im Bearer-Header zu übergeben.

Get_token zum Abrufen und Aktualisieren von Tokens verwenden

Das get_token-Dienstprogramm tauscht Ihre Basic Auth-Anmeldedaten und einen Sicherheitscode gegen ein OAuth2-Zugriffs- und -Aktualisierungstoken aus. Das Dienstprogramm get_token akzeptiert Ihre Anmeldedaten und gibt ein gültiges Zugriffstoken aus. Wenn ein Token aktualisiert werden kann, wird es aktualisiert und ausgedruckt. Wenn das Aktualisierungstoken abläuft, werden Sie zur Eingabe von Nutzeranmeldedaten aufgefordert.

Das get_token-Dienstprogramm speichert die Tokens auf dem Laufwerk und kann bei Bedarf verwendet werden. Außerdem wird ein gültiges Zugriffstoken für stdout ausgegeben. Von dort aus können Sie Postman verwenden oder es zur Verwendung in curl in eine Umgebungsvariable einbetten.

Im folgenden Verfahren wird beschrieben, wie Sie mit get_token ein OAuth2-Zugriffstoken abrufen, um Edge-Management-API-Aufrufe auszuführen:

  1. Laden Sie das sso-cli-Bundle herunter:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    Dabei ist edge_sso_IP_DNS die IP-Adresse des DNS-Namens der Maschine, auf der das Edge-SSO-Modul gehostet wird. Wenn Sie TLS on Edge SSO konfiguriert haben, verwenden Sie https und die richtige TLS-Portnummer.

  2. Entpacken Sie das Paket ssocli-bundle.zip:
    unzip ssocli-bundle.zip
  3. Installieren Sie get_token in /usr/local/bin:
    ./install

    Verwenden Sie die Option -b, um einen anderen Speicherort anzugeben:

    ./install -b path
  4. Legen Sie die Umgebungsvariable SSO_LOGIN_URL auf Ihre Anmelde-URL im folgenden Format fest:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
    .

    Dabei ist edge_sso_IP_DNS die IP-Adresse des DNS-Namens der Maschine, auf der das Edge-SSO-Modul gehostet wird. Wenn Sie TLS on Edge SSO konfiguriert haben, verwenden Sie https und die richtige TLS-Portnummer.

  5. Rufen Sie in einem Browser die folgende URL auf, um einen einmaligen Sicherheitscode zu erhalten:
    http://edge_sso_IP_DNS:9099/passcode

    Wenn Sie TLS on Edge SSO konfiguriert haben, verwenden Sie https und die richtige TLS-Portnummer.

    Diese URL gibt einen einmaligen Sicherheitscode zurück. Dieser bleibt gültig, bis Sie die URL aktualisieren, um einen neuen Sicherheitscode zu erhalten, oder Sie verwenden den Sicherheitscode mit get_token, um ein Zugriffstoken zu generieren.

  6. Rufen Sie get_token auf, um das OAuth2-Zugriffstoken abzurufen:
    get_token -u emailAddress

    Dabei ist emailAddress die E-Mail-Adresse eines Edge-Nutzers. Sie werden aufgefordert, den einmaligen Sicherheitscode aus Schritt 3 einzugeben:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

    Geben Sie den Sicherheitscode ein. Das get_token-Dienstprogramm ruft das OAuth2-Zugriffstoken ab, gibt es auf dem Bildschirm aus und schreibt es zusammen mit dem Aktualisierungstoken in ~/.sso-cli.

    Sie können den Sicherheitscode in der Befehlszeile mit einem get_token-Befehl im folgenden Format eingeben:

    get_token -u emailAddress -p passcode

  7. Übergeben Sie das Zugriffstoken als Bearer-Header an einen Edge-Management-API-Aufruf:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    Nachdem Sie zum ersten Mal ein neues Zugriffstoken abgerufen haben, können Sie es wie unten gezeigt in einem einzigen Befehl abrufen und an einen API-Aufruf übergeben:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

    Wenn das Zugriffstoken abgelaufen ist, wird es mit dieser Form des Befehls automatisch aktualisiert, bis das Token abläuft.

Nach Ablauf des Aktualisierungstokens werden Sie von get_token zur Eingabe eines neuen Sicherheitscodes aufgefordert. Sie müssen die in Schritt 3 oben gezeigte URL aufrufen und einen neuen Sicherheitscode generieren, bevor Sie ein neues OAuth-Zugriffstoken generieren können.

Verwaltungs-API zum Abrufen und Aktualisieren von Tokens verwenden

Die Verwendung der OAuth2-Sicherheit mit der Apigee Edge-Verwaltungs-API enthält Anweisungen, die zeigen, wie die Edge-Verwaltungs-API verwendet wird, um Tokens abzurufen und zu aktualisieren. Sie können Edge API-Aufrufe auch für Tokens verwenden, die von SAML-Assertions generiert wurden.

Der einzige Unterschied zwischen den unter OAuth2-Sicherheit mit der Apigee Edge-Verwaltungs-API verwenden dokumentierten API-Aufrufen besteht darin, dass die URL des Aufrufs auf Ihren Zonennamen verweisen muss. Zusätzlich müssen Sie zum Generieren des ersten Zugriffstokens den Sicherheitscode angeben, wie in Schritt 3 des oben beschriebenen Verfahrens beschrieben.

Verwenden Sie beispielsweise den folgenden API-Aufruf, um das Erstzugriffs- und Aktualisierungstoken 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 /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

Übergeben Sie zur Autorisierung reservierte OAuth2-Clientanmeldedaten im Authorization-Header. Der Aufruf gibt die Zugriffs- und Aktualisierungstokens auf dem Bildschirm aus.

Um das Zugriffstoken später zu aktualisieren, 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 /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'