Berechtigungstyp der Clientanmeldedaten implementieren

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Mit dem Berechtigungstyp für Clientanmeldedaten sendet eine Anwendung ihre eigenen Anmeldedaten – die Client-ID und den Clientschlüssel – an einen Endpunkt in Apigee, der für die Generierung eines Zugriffstokens eingerichtet ist. Wenn die Anmeldedaten gültig sind, gibt Apigee ein Zugriffstoken an die Clientanwendung zurück.

Über dieses Thema

Dieses Thema bietet eine allgemeine Beschreibung des Berechtigungstyps für OAuth 2.0-Clientanmeldedaten und erläutert, wie der Ablauf in Apigee implementiert wird.

Anwendungsfälle

Dieser Berechtigungstyp wird in der Regel verwendet, wenn die Anwendung auch der Ressourceninhaber ist. Beispielsweise benötigt eine Anwendung eventuell den Zugriff auf einen Back-End-Speicherdienst für das Speichern und Abrufen von Daten, die sie zum Ausführen ihrer Arbeit braucht, wobei es sich nicht unbedingt um Daten handelt, die dem Endnutzer gehören. Der Gewährungsablauf für diesen Berechtigungstyp findet ausschließlich zwischen zwischen einer Clientanwendung und dem Autorisierungsserver statt. Ein Endnutzer ist nicht am Gewährungsablauf dieses Berechtigungstyps beteiligt.

Rollen

Rollen geben die "Akteure" an, die an dem OAuth-Ablauf beteiligt sind. Werfen wir kurz einen Blick auf die Rollen der Clientanmeldedaten, um die Interaktion mit Apigee zu veranschaulichen. Eine vollständige Beschreibung der OAuth 2.0-Rollen finden Sie in der IETF OAuth 2.0-Spezifikation.

  • Clientanwendung: Die Anwendung, die Zugriff auf die geschützten Ressourcen des Nutzers benötigt. Bei diesem Ablauf wird die Anwendung in der Regel auf dem Server und nicht lokal auf dem Laptop oder Gerät des Nutzers ausgeführt.
  • Apigee: In diesem Ablauf ist Apigee der OAuth-Autorisierungsserver. Seine Aufgabe besteht darin, Zugriffstokens zu generieren, Zugriffstoken zu validieren und autorisierte Anfragen für geschützte Ressourcen an den Ressourcenserver zu übergeben.
  • Ressourcenserver: Der Back-End-Dienst, der die geschützten Daten speichert, auf die die Clientanwendung zugreifen darf. Wenn Sie API-Proxys schützen, die in Apigee gehostet werden, ist Apigee auch der Ressourcenserver.

Codebeispiel

Auf GitHub finden Sie eine vollständige, funktionsfähige Beispielimplementierung für den Berechtigungstyp der Clientanmeldedaten. Unter Weitere Ressourcen weiter unten erhalten Sie Links zu weiteren Beispielen.

Flussdiagramm

Das folgende Ablaufdiagramm veranschaulicht das Zusammenwirken von Clientanmeldedaten und Apigee als Autorisierungsserver. Im Allgemeinen ist Apigee auch der Ressourcenserver in diesem Ablauf. API-Proxys sind dabei die geschützten Ressourcen.

Ablauf der Clientanmeldedaten

Schritte für den Ablauf der Clientanmeldedaten

Im Folgenden finden Sie eine Zusammenfassung der Schritte, die zur Implementierung des Berechtigungstyps für die Clientanmeldedaten erforderlich sind, wenn Apigee als Autorisierungsserver dient. Beachten Sie, dass die Clientanwendung bei diesem Ablauf einfach die Client-ID und den Clientschlüssel übergibt. Wenn sie gültig sind, gibt Apigee ein Zugriffstoken zurück.

Voraussetzung: Damit die Client-ID und der Clientschlüssel abgerufen werden können, muss die Clientanwendung bei Apigee registriert sein. Ausführliche Informationen dazu finden Sie unter Clientanwendung registrieren.

1. Client fordert Zugriffstoken an

Für den Abruf eines Zugriffstokens sendet der Client einen API-Aufruf an Apigee mit den Werten für die Client-ID und den Clientschlüssel, die von einer registrierten Entwickleranwendung abgerufen wurden. Die Werte in diesem Beispiel sind Base64-codiert und werden im Authorization-Header übergeben. Darüber hinaus muss der Parameter grant_type=client_credentials als Abfrageparameter übergeben werden. (Sie können die OAuthV2-Richtlinie aber so konfigurieren, dass sie diesen Parameter im Anfrage-Header oder im Anfragetext akzeptiert. Ausführliche Informationen finden Sie unter OAuthV2-Richtlinie).

Beispiel:

curl -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=client_credentials"

Weitere Informationen finden Sie unter Berechtigungstyp der Clientanmeldedaten verwenden.

2. Apigee validiert die Anmeldedaten

Beachten Sie, dass der API-Aufruf an den Endpunkt /oauth/token gesendet wird. An diesen Endpunkt ist eine Richtlinie angehängt, die die Anmeldedaten der Anwendung validiert. Die Richtlinie vergleicht dabei die gesendeten Schlüssel mit jenen, die Apigee bei der Registrierung der Anwendung erstellt hat. Weitere Informationen zu OAuth-Endpunkten in Apigee finden Sie unter OAuth-Endpunkte und -Richtlinien konfigurieren.

3. Apigee gibt eine Antwort zurück

Wenn die Anmeldedaten korrekt sind, gibt Apigee ein Zugriffstoken an den Client zurück. Andernfalls wird ein Fehler zurückgegeben.

4. Client ruft die geschützte API auf

Mit dem gültigen Zugriffstoken kann der Client jetzt 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. Ein Beispiel dazu finden Sie nachfolgend unter Geschützte API aufrufen.

Abläufe und Richtlinien konfigurieren

Als Autorisierungsserver verarbeitet Apigee Anfragen für Zugriffstokens. API-Entwickler müssen einen Proxy mit einem benutzerdefinierten Ablauf erstellen, um Tokenanfragen zu verarbeiten und um eine OAuthV2-Richtlinie hinzuzufügen bzw. zu konfigurieren. In diesem Abschnitt wird erläutert, wie dieser Endpunkt konfiguriert wird.

Benutzerdefinierten Ablauf konfigurieren

Am einfachsten lässt sich die Konfiguration des API-Proxy-Ablaufs durch Darstellung der XML-Ablaufdefinition veranschaulichen. Im Folgenden finden Sie ein Beispiel für einen API-Proxy-Ablauf, der zur Verarbeitung einer Zugriffstokenanfrage entwickelt wurde. Wenn beispielsweise eine Anfrage eingeht und das Pfadsuffix mit /oauth/token übereinstimmt, wird die Richtlinie "GetAccessToken" ausgelöst. Unter OAuth-Endpunkte und -Richtlinien konfigurieren finden Sie eine kurze Übersicht über die Schritte zum Erstellen eines benutzerdefinierten Ablaufs dieser Art.

<Flows>
  <Flow name="GetAccessToken">
         <!-- This policy flow is triggered when the URI path suffix
         matches /oauth/token. Publish this URL to app developers
         to use when obtaining an access token using an auth code
         -->
    <Condition>proxy.pathsuffix == "/oauth/token"</Condition>
    <Request>
        <Step><Name>GetAccessToken</Name></Step>
    </Request>
  </Flow>
</Flows>

Ablauf mit einer Richtlinie konfigurieren

Nachfolgend wird beschrieben, wie Sie eine Richtlinie an den Endpunkt anhängen. Unter OAuth-Endpunkte und -Richtlinien konfigurieren finden Sie einen kurzen Überblick über die Schritte zum Hinzufügen einer OAuthV2-Richtlinie an einen Proxyendpunkt.

GetAccessToken

Diese Richtlinie wird an den Pfad /oauth/token angehängt. Dabei wird die OAuthV2-Richtlinie für den angegebenen GenerateAccessToken-Vorgang verwendet.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse/>
</OAuthV2>

Der API-Aufruf zum Abrufen des Zugriffstokens ist ein POST-Vorgang und umfasst einen Autorisierungs-Header mit base64-codierten client_id + client_secret und den Abfrageparameter grant_type=client_credentials. Außerdem können optionale Parameter für Bereich und Status hinzugefügt werden. Beispiel:

curl -i \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \
  -d 'grant_type=client_credentials' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'

Richtlinie zum Prüfen des Zugriffstokens anhängen

Zum Schutz Ihrer API mit OAuth 2.0-Sicherheit müssen Sie eine OAuthV2-Richtlinie mit dem VerifyAccessToken-Vorgang hinzufügen. Diese Richtlinie prüft, ob eingehende Anfragen ein gültiges Zugriffstoken haben. Wenn das Token gültig ist, verarbeitet Apigee die Anfrage. Ist dies nicht der Fall, gibt Apigee einen Fehler zurück. Die grundlegenden Schritte dazu finden Sie unter Zugriffstoken prüfen.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken">
    <DisplayName>VerifyAccessToken</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>VerifyAccessToken</Operation>
    <SupportedGrantTypes/>
    <GenerateResponse enabled="true"/>
    <Tokens/>
</OAuthV2>

Geschützte API aufrufen

Um eine API aufzurufen, die mit OAuth 2.0-Sicherheit geschützt ist, müssen Sie ein gültiges Zugriffstoken angeben. Das richtige Muster ist, das Token in einem Autorisierungs-Header so anzugeben: Beachten Sie, dass das Zugriffstoken auch als "Inhabertoken" bezeichnet wird.

$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \
  http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282

Weitere Informationen finden Sie unter Zugriffstoken senden.

Zusätzliche Ressourcen

  • Apigee bietet Onlineschulungen für API-Entwickler, einschließlich eines Kurses zur API-Sicherheit, die OAuth enthält.
  • OAuthV2-Richtlinie – Bietet viele Beispiele, wie Sie Anfragen an den Autorisierungsserver senden und die OAuthV2-Richtlinie konfigurieren können.