Verwenden von OAuth2 für den Zugriff auf die Edge API

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Mit Apigee Edge können Sie Edge-API-Aufrufe ausführen, die mit OAuth2-Tokens authentifiziert werden. Unterstützung für OAuth2 ist in Edge für die Cloud-Konten standardmäßig aktiviert. Wenn Sie Edge für die Private Cloud verwenden, können Sie OAuth2 nicht verwenden, ohne zuvor SAML oder LDAP einzurichten.

Funktionsweise von OAuth2 (mit der Apigee Edge API)

Aufrufe der Apigee Edge API erfordern eine Authentifizierung, damit wir sicher sein können, dass Sie tatsächlich die sind, die Sie angeben. Um Sie zu authentifizieren, muss mit Ihrer Anfrage für den Zugriff auf die API ein OAuth2-Zugriffstoken gesendet werden.

Wenn Sie beispielsweise Details zu einer Organisation in Edge abrufen möchten, senden Sie eine Anfrage an eine URL wie die folgende:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

Sie können diese Anfrage jedoch nicht einfach senden, ohne uns mitzuteilen, wer Sie sind. Andernfalls kann jeder die Details Ihrer Organisation sehen.

Hier kommt OAuth2 ins Spiel: Zur Authentifizierung müssen Sie uns in dieser Anfrage auch ein Zugriffstoken senden. Das Zugriffstoken teilt uns mit, wer Sie sind, sodass wir sicher sein können, dass Sie die Details der Organisation sehen können.

Glücklicherweise können Sie ein Token erhalten, indem Sie Ihre Anmeldedaten an den Edge-OAuth2-Dienst senden. Der Dienst antwortet mit Zugriffs- und Aktualisierungstokens.

OAuth2-Vorgang: die erste Anfrage

Die folgende Abbildung zeigt den OAuth2-Ablauf, wenn Sie zum ersten Mal auf die Edge API zugreifen:

OAuth-Ablauf: erste Anfrage
Abbildung 1:OAuth-Ablauf: Erste Anfrage

Wie Abbildung 1 zeigt, führen Sie bei Ihrer ersten Anfrage an die Edge API Folgendes aus:

  1. Sie fordern ein Zugriffstoken an. Sie können dazu die Edge API, acurl oder get_token verwenden. Beispiel:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Der Edge-OAuth2-Dienst antwortet mit einem Zugriffstoken und gibt es an stdout aus. Beispiel:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    Die Dienstprogramme acurl und get_token speichern die Zugriffs- und Aktualisierungstokens automatisch in ~/.sso-cli (das Aktualisierungstoken wird nicht in stdout geschrieben). Wenn Sie den Edge-OAuth2-Dienst zum Abrufen von Tokens verwenden, müssen Sie sie zur späteren Verwendung selbst speichern.

  3. Mit dem Zugriffstoken senden Sie eine Anfrage an die Edge API. acurl hängt das Token automatisch an, z. B.
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
    .

    Wenn Sie einen anderen HTTP-Client verwenden, müssen Sie das Zugriffstoken hinzufügen. Beispiel:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Die Edge API führt Ihre Anfrage aus und gibt normalerweise eine Antwort mit Daten zurück.

OAuth2-Ablauf: Nachfolgende Anfragen

Bei nachfolgenden Anfragen müssen Sie Ihre Anmeldedaten nicht gegen ein Token austauschen. Stattdessen können Sie einfach das Zugriffstoken angeben, das Sie bereits haben, sofern es noch nicht abgelaufen ist:

OAuth-Ablauf: Nachfolgende Anfragen
Abbildung 2:OAuth-Ablauf: Nachfolgende Anfragen

Wie Abbildung 2 zeigt, gilt Folgendes, wenn Sie bereits ein Zugriffstoken haben:

  1. Mit dem Zugriffstoken senden Sie eine Anfrage an die Edge API. acurl hängt das Token automatisch an. Wenn Sie andere Tools verwenden, müssen Sie das Token manuell hinzufügen.
  2. Die Edge API führt Ihre Anfrage aus und gibt normalerweise eine Antwort mit Daten zurück.

OAuth2-Ablauf: Ablauf Ihres Zugriffstokens

Wenn ein Zugriffstoken nach 12 Stunden abläuft, können Sie mit dem Aktualisierungstoken ein neues Zugriffstoken anfordern:

OAuth-Ablauf: Zugriffstoken aktualisieren
Abbildung 3:OAuth-Ablauf: Zugriffstoken aktualisieren

Wie Abbildung 3 zeigt, gilt Folgendes, wenn Ihr Zugriffstoken abgelaufen ist:

  1. Sie senden eine Anfrage an die Edge API, aber Ihr Zugriffstoken ist abgelaufen.
  2. Die Edge API lehnt Ihre Anfrage als nicht autorisiert ab.
  3. Sie senden ein Aktualisierungstoken an den Edge-OAuth2-Dienst. Wenn Sie acurl verwenden, erfolgt dies automatisch.
  4. Der Edge-OAuth2-Dienst antwortet mit einem neuen Zugriffstoken.
  5. Mit dem neuen Zugriffstoken senden Sie eine Anfrage an die Edge API.
  6. Die Edge API führt Ihre Anfrage aus und gibt normalerweise eine Antwort mit Daten zurück.

Token abrufen

Um ein Zugriffstoken zu erhalten, das Sie an die Edge API senden können, können Sie zusätzlich zu einem Dienstprogramm wie curl die folgenden Apigee-Dienstprogramme verwenden:

  • Dienstprogramm get_token: Tauscht Ihre Apigee-Anmeldedaten gegen Zugriffs- und Aktualisierungstoken aus, mit denen Sie die Edge API aufrufen können.
  • acurl-Dienstprogramm: Stellt einen Convenience-Wrapper um einen curl-Standardbefehl bereit. Konstruiert HTTP-Anfragen an die Edge API, ruft Zugriffs- und Aktualisierungstokens von get_token ab und gibt das Zugriffstoken an die Edge API weiter.
  • Tokenendpunkte im Edge-OAuth2-Dienst: Tauschen Sie Ihre Apigee-Anmeldedaten über einen Aufruf an die Edge API gegen die Zugriffs- und Aktualisierungstokens aus.

Diese Dienstprogramme tauschen die Anmeldedaten für Ihr Apigee-Konto (E-Mail-Adresse und Passwort) gegen Tokens mit der folgenden Dauer aus:

  • Zugriffstokens laufen nach 12 Stunden ab.
  • Aktualisierungstokens laufen nach 30 Tagen ab.

Daher können Sie das Tokenpaar 30 Tage lang weiter verwenden, nachdem Sie einen API-Aufruf mit acurl oder get_token durchgeführt haben. Nach Ablauf müssen Sie Ihre Anmeldedaten noch einmal eingeben und neue Tokens abrufen.

Mit OAuth2 auf die Edge API zugreifen

Um auf die Edge API zuzugreifen, senden Sie eine Anfrage an einen API-Endpunkt und fügen das Zugriffstoken ein. Sie können dies mit jedem HTTP-Client tun, einschließlich eines Befehlszeilenprogramms wie curl, einer browserbasierten UI wie Postman oder einem Apigee-Dienstprogramm wie acurl.

Der Zugriff auf die Edge API mit acurl und mit curl wird in den folgenden Abschnitten beschrieben.

Acurl verwenden

Um mit acurl auf die Edge API zuzugreifen, muss Ihre erste Anfrage Ihre Anmeldedaten enthalten. Der Edge-OAuth2-Dienst antwortet mit den Zugriffs- und Aktualisierungstokens. acurl speichert die Tokens lokal.

Bei nachfolgenden Anfragen verwendet acurl die gespeicherten Tokens in ~/.sso-cli, damit Sie Ihre Anmeldedaten nicht noch einmal angeben müssen, bis die Tokens abgelaufen sind.

Das folgende Beispiel zeigt eine erste acurl-Anfrage, mit der Details für die Organisation "ahamilton-eval" abgerufen werden:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

Neben dem Abrufen von Details über die Organisation zeigt dieses Beispiel auch eine zweite Anfrage, mit der eine Liste von Richtlinien innerhalb des API-Proxys "helloworld" abgerufen wird. In der zweiten Anfrage wird das Kürzel „o“ für „Organisationen“ in der URL verwendet.

Beachten Sie, dass acurl das Zugriffstoken bei der zweiten Anfrage automatisch übergibt. Sie müssen Ihre Nutzeranmeldedaten nicht weitergeben, sobald acurl die OAuth2-Tokens gespeichert hat. Für nachfolgende Aufrufe wird das Token von ~/.sso-cli abgerufen.

Weitere Informationen finden Sie unter Mit acurl auf die Edge API zugreifen.

curl verwenden

Sie können curl verwenden, um auf die Edge API zuzugreifen. Dazu müssen Sie zuerst die Zugriffs- und Aktualisierungstokens anfordern. Sie können diese mit einem Dienstprogramm wie get_token oder dem Edge OAuth2-Dienst abrufen.

Nachdem Sie Ihr Zugriffstoken erfolgreich gespeichert haben, übergeben Sie es im Header Authorization Ihrer Aufrufe an die Edge API, wie im folgenden Beispiel gezeigt:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

Das Zugriffstoken ist ab der Ausgabe zwölf Stunden lang gültig. Nach Ablauf des Zugriffstokens kann das Aktualisierungstoken 30 Tage lang verwendet werden, um ein anderes Zugriffstoken ohne Anmeldedaten auszugeben. Apigee empfiehlt, erst nach Ablauf des Referenztokens ein neues Zugriffstoken anzufordern, anstatt bei jedem API-Aufruf Anmeldedaten einzugeben und eine neue Anfrage zu senden.

Ablauf des Tokens

Sobald Ihr Zugriffstoken abgelaufen ist, können Sie mit dem Aktualisierungstoken ein neues Zugriffstoken anfordern, ohne Ihre Anmeldedaten noch einmal einreichen zu müssen.

Wie Sie Ihr Zugriffstoken aktualisieren, hängt davon ab, welches Tool Sie verwenden:

  • acurl: Keine Maßnahme erforderlich. acurl aktualisiert das Zugriffstoken automatisch, wenn Sie eine Anfrage senden, die eine veraltete Zugriffstoken enthält.
  • get_token: Rufen Sie get_token auf, um das Zugriffstoken zu aktualisieren.
  • Edge-OAuth2-Dienst: Senden Sie eine Anfrage, die Folgendes enthält:
    • Aktualisierungstoken
    • Formularparameter grant_type auf „refresh_token“ festgelegt

OAuth2 für Computernutzer

Sie können die Dienstprogramme acurl und get_token verwenden, um Skripte für den automatischen Zugriff auf die Edge APIs mit OAuth2-Authentifizierung für Computernutzer zu erstellen. Das folgende Beispiel zeigt, wie Sie mit get_token ein Zugriffstoken anfordern und dann den Tokenwert einem curl-Aufruf hinzufügen:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Alternativ können Sie die Tokenanfrage und den curl-Aufruf mit dem Dienstprogramm acurl kombinieren. Beispiel:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

In beiden Beispielen wird durch das Festlegen des Werts von -m auf einen leeren String verhindert, dass ein Computernutzer zur Eingabe eines MFA-Codes aufgefordert wird.