Art der Passwortzuweisung implementieren

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

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 senden. Ein Identitätsserver validiert die Anmeldedaten. Wenn sie gültig sind, fährt Apigee mit der Erstellung eines Zugriffstokens fort und gibt es an die Anwendung zurück.

Über dieses Thema

Dieses Thema bietet eine allgemeine Beschreibung und eine Übersicht über den Ablauf mit dem Grant-Typ "Passwort des Ressourceninhabers" von OAuth 2.0 und wie dieser Ablauf auf Apigee implementiert wird.

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

  • Art der Passwortzuweisung verwenden: Erläutert das Erstellen einer Tokenanfrage, das Konfigurieren der OAuthV2-Richtlinie für die Art der Passwortzuweisung und das Konfigurieren eines Endpunkts für die Richtlinie in Apigee.
  • oauth.validate-key-secret: Ein Beispielproxy in GitHub, den Sie für Apigee 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 mit dem Grant-Typ "Passwort des Ressourceninhabers" mit Apigee-Bereitstellung als Autorisierungsserver.

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 oder speichern Sie es und öffnen Sie es in einem Viewer für Bilder.

Der Ablauf mit dem Grant-Typ "Passwort des Ressourceninhabers".

Schritte für die Art der Passwortzuweisung

Im Folgenden finden Sie eine Zusammenfassung der Schritte, die zur Implementierung der Art der Passwortzuweisung erforderlich sind, wobei Apigee als Autorisierungsserver dient.

Voraussetzung: Damit die Client-ID und der Clientschlüssel abgerufen werden können, muss die Clientanwendung bei Apigee registriert sein. Weitere Informationen finden Sie unter Clientanwendungen 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 Anwendung klickt), wird er zu einem Anmeldeformular weitergeleitet.

2. Anwendung fordert ein Zugriffstoken von Apigee an

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

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 Basic Auth-Header, finden Sie im Abschnitt zum Gewähren von Passwörtern unter OAuth 2.0-Tokens abrufen.

3. Apigee 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. Apigee 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 Apigee die Anfrage weiter verarbeiten. Andernfalls stoppt Apigee 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 (den Proxy) gesendet. Apigee ist für die Validierung des Zugriffstokens zuständig, 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