Art der Passwortzuweisung implementieren

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

Das Passwort (oder "Passwort") des Ressourceninhabers wird hauptsächlich dann verwendet, wenn die Anwendung sehr vertrauenswürdig ist. In dieser Konfiguration stellt der Nutzer die Ressourcenserver-Anmeldedaten (Nutzername/Passwort) der Clientanwendung zur Verfügung, die sie in einer Zugriffstoken-Anfrage an Apigee Edge senden. Ein Identitätsserver validiert die Anmeldedaten. Wenn sie gültig sind, fährt Edge mit einem Zugriffstoken fort und gibt es an die Anwendung zurück.

Über dieses Thema

Dieses Thema bietet eine allgemeine Beschreibung und eine Übersicht über den Ablauf der Passwortgewährung für OAuth 2.0-Ressourceninhaber und erläutert, wie dieser Ablauf in Apigee Edge implementiert wird.

Beispiele, die für Sie nützlich sein könnten

  • Anfordern eines Zugriffstokens: Art der Passwortzuweisung: Zeigt Ihnen, wie Sie eine Tokenanforderung stellen, die OAuthV2-Richtlinie für die Art der Passworterteilung konfigurieren und wie Sie einen Endpunkt für die Richtlinie in Edge konfigurieren.
  • oauth.validate-key-secret: Ein Beispielproxy in GitHub, den Sie für Edge bereitstellen und testen können. Es handelt sich um ein End-to-End-Beispiel, in dem die Art der Passwortänderung aufgeführt ist. Es wird empfohlen, die Anmeldedaten (Clientschlüssel) des Clients zu authentifizieren, bevor die Anmeldedaten des Nutzers an einen Identitätsanbieter gesendet werden.

Video

Video : In diesem Video erfahren Sie, wie Sie die Art der Passwortzuweisung implementieren.

Anwendungsfälle

Dieser Zuweisungstyp ist für hochvertrauenswürdige oder privilegierte Anwendungen vorgesehen, da der Nutzer seine Ressourcenserver-Anmeldedaten an die Anwendung weitergeben muss. In der Regel bietet die Anwendung einen Anmeldebildschirm, auf dem der Nutzer seine Anmeldedaten eingibt.

Flussdiagramm

Das folgende Flussdiagramm veranschaulicht den Ablauf der Passwortzuweisung des Ressourceninhabers, wobei Apigee Edge als Autorisierungsserver dient.

Tipp: Wenn Sie eine größere Version dieses Diagramms sehen möchten, klicken Sie mit der rechten Maustaste darauf und öffnen Sie es in einem neuen Tab. Sie können es auch speichern und in einem Bildanzeigeprogramm öffnen.

Schritte für die Art der Passwortzuweisung

Im Folgenden finden Sie eine Zusammenfassung der Schritte, die zum Implementieren des Passwortzuteilungstyps erforderlich sind, bei dem Apigee Edge als Autorisierungsserver dient.

Voraussetzungen: Die Client-App muss bei Apigee Edge registriert sein, um die Client-ID und den Clientschlüsselschlüssel abzurufen. Weitere Informationen finden Sie unter Client-Apps registrieren.

1. Der Nutzer initiiert den Ablauf und gibt Anmeldedaten ein

Wenn die Anwendung auf die geschützten Ressourcen des Nutzers zugreifen muss (z. B. wenn der Nutzer auf eine Schaltfläche in der App klickt), wird der Nutzer zu einem Anmeldeformular weitergeleitet.

2. Anwendung fordert ein Zugriffstoken von Apigee Edge an

Die Anwendung sendet eine Zugriffstoken-Anfrage mit den Anmeldedaten des Nutzers an einen GenerateAccessToken-Endpunkt in Apigee Edge.

Hier sehen Sie ein Beispiel für eine POST-Anfrage, die die erforderlichen Parameter für diesen Grant-Typ enthält:

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

Alternativ kann dieser Befehl so ausgeführt werden: Dabei wird die Option "-u" verwendet, um den base64-codierten grundlegenden Authentifizierungsheader für Sie zu erstellen.

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

(Jeder dieser Befehle sollte in einer Zeile stehen.)

Die Nutzeranmeldedaten sind in den Formularparametern enthalten, die Clientanmeldedaten sind im grundlegenden HTTP-Authentifizierungsheader codiert. Eine detaillierte Beschreibung dieses API-Aufrufs, einschließlich Details zum erforderlichen grundlegenden Authentifizierungsheader, finden Sie im Abschnitt zur Passwortzuweisung unter Zugriffstoken und Autorisierungscodes anfordern.

3. Edge validiert die Clientanwendung

Bevor Sie Nutzername und Passwort des Nutzers an einen Identitätsanbieter senden, muss Edge wissen, dass die Clientanwendung, von der die Anfrage stammt, eine gültige, vertrauenswürdige Anwendung ist. Eine Möglichkeit, dies zu erreichen, besteht in der API-Schlüsselauthentifizierung für den API-Aufruf. In einigen Fällen kann es sinnvoll sein, sowohl den Clientschlüssel als auch das Secret zu validieren. Ein Beispiel-Proxy, der dieses terromatische Verfahren im api-platform-samples-Repository auf GitHub veranschaulicht.

4. Edge verarbeitet die Anmeldedaten

Nachdem die Clientanwendung überprüft wurde, können Sie mit einem Service Callout oder einer JavaScript-Richtlinie den Identitätsdienst aufrufen und die Anmeldedaten des Nutzers senden. Dies kann beispielsweise ein LDAP-Dienst oder ein beliebiger Dienst sein, den Sie zur Validierung der Anmeldedaten verwenden möchten. Weitere Informationen zu diesen Richtlinien finden Sie unter Variablen extrahieren und JavaScript-Richtlinie.

Wenn der Identitätsdienst die Anmeldedaten validiert und eine 200-Antwort zurückgibt, wird Edge die Anfrage weiter verarbeiten. Andernfalls stoppt Edge die Verarbeitung und gibt einen Fehler an die Clientanwendung zurück.

5. Die OAuthV2-Richtlinie wird ausgeführt

Wenn die Anmeldedaten gültig sind, wird im nächsten Schritt eine OAuthV2-Richtlinie ausgeführt, die für die Art der Passworterteilung konfiguriert wurde. Hier ein Beispiel: Die Elemente <UserName> und <PassWord> sind erforderlich und Sie können sie aus den Ablaufvariablen abrufen, die mit der ExtractVariables-Richtlinie gespeichert wurden. Ausführliche Referenzinformationen zu dieser Richtlinie finden Sie unter OAuthV2-Richtlinie.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>360000000</ExpiresIn> 
  <SupportedGrantTypes> 
     <GrantType>password</GrantType> 
  </SupportedGrantTypes> 
  <GrantType>request.queryparam.grant_type</GrantType> 
  <UserName>login</UserName>
  <PassWord>password</PassWord>
  <GenerateResponse/> 
</OAuthV2>

Wenn diese Richtlinie erfolgreich ist, wird eine Antwort an den Client zurückgegeben, die ein Zugriffstoken enthält. Die Antwort hat das JSON-Format. Hier ein Beispiel: Beachten Sie, dass "access_token" eines der Elemente ist:

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799",
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "0",
    "refresh_count": "0"
}

6. Der Client ruft die geschützte API auf

Mit einem gültigen Zugriffscode kann der Client Aufrufe an die geschützte API senden. In diesem Szenario werden Anfragen an Apigee Edge (den Proxy) gesendet. Edge ist für die Validierung des Zugriffstokens verantwortlich, bevor der API-Aufruf an den Zielressourcenserver übergeben wird. Zugriffstokens werden in einem Autorisierungsheader übergeben. Beispiel:

$ curl -H "Authorization: Bearer I6daIgMSiUgYX1K2qgQWPi37ztS6
" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282