<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Aufgaben in diesem Lab
- Beispiel-API-Proxy herunterladen und bereitstellen
- Sie erstellen einen OAuth-geschützten API-Proxy.
- Erstellen Sie ein Produkt, einen Entwickler und eine App.
- Anmeldedaten für ein OAuth-Zugriffstoken austauschen.
- API mit einem Zugriffstoken aufrufen
In dieser Anleitung erfahren Sie, wie Sie eine API mit OAuth 2.0 schützen.
OAuth ist ein Autorisierungsprotokoll, mit dem Anwendungen im Namen der Nutzer auf Informationen zugreifen können, ohne dass Nutzer ihre Nutzernamen und Passwörter ändern müssen.
Mit OAuth werden Sicherheitsanmeldedaten (z. B. Nutzername/Passwort oder Schlüssel/Secret) gegen ein Zugriffstoken ausgetauscht. Beispiel:
joe:joes_password
(username:password) oder
Nf2moHOASMJeUmXVdDhlMbPaXm2U7eMc:unUOXYpPe74ZfLEb
(key:secret)
könnte dann etwa so aussehen:
b0uiYwjRZLEo4lEu7ky2GGxHkanN
Das Zugriffstoken besteht aus einer zufälligen Zeichenfolge und ist temporär (es sollte nach relativ kurzer Zeit ablaufen), sodass die Weitergabe zur Authentifizierung eines Benutzers in einem App-Workflow viel sicherer ist als die Weitergabe der tatsächlichen Anmeldeinformationen.
In der OAuth 2.0-Spezifikation werden verschiedene Mechanismen für die Verteilung von Zugriffstokens für Anwendungen definiert. Die einfachste OAuth 2.0-Zustimmungsart wird als „Clientanmeldedaten“ bezeichnet. In diesem Gewährungstyp werden OAuth-Zugriffstokens im Austausch für Clientanmeldedaten generiert. Das sind Schlüssel-/Consumer-Secret-Paare, wie im obigen Beispiel.
Der Zuweisungstyp des Client-Anmeldedaten in Edge wird mithilfe von Richtlinien in API-Proxys implementiert. Ein typischer OAuth-Ablauf umfasst zwei Schritte:
- Call API Proxy proxy 1, um ein OAuth-Zugriffstoken aus Clientanmeldedaten zu generieren. Eine OAuth v2.0-Richtlinie für den API-Proxy übernimmt dies.
- Call API proxy 2, um das OAuth-Zugriffstoken in einem API-Aufruf zu senden Der API-Proxy überprüft das Zugriffstoken mithilfe einer OAuth v2.0-Richtlinie.
Voraussetzungen
- Ein Apigee Edge-Konto. Falls Sie noch keins haben, können Sie sich mit der Anleitung für unter Apigee erstellen Edge-Konto.
- cURL, die auf Ihrem Computer installiert ist, API-Aufrufe über die Befehlszeile ausführen.
Tokengenerierenden API-Proxy herunterladen und bereitstellen
In diesem Schritt erstellen Sie den API-Proxy, der ein OAuth-Zugriffstoken aus einem Nutzerschlüssel und einem Consumer-Secret generiert, das in einem API-Aufruf gesendet wird. Apigee bietet einen API-Beispielproxy, der dies ausführt. Sie laden den Proxy jetzt herunter und stellen ihn bereit, um ihn später in der Anleitung zu verwenden. (Sie können diesen API-Proxy problemlos selbst erstellen. Die Schritte zum Herunterladen und Bereitstellen sind der Einfachheit halber und zeigen, wie einfach es ist, Proxys freizugeben, die bereits erstellt wurden.)
- Laden Sie die ZIP-Datei für den Beispiel-API-Proxy „OAuth“ herunter und speichern Sie sie in einem beliebigen Verzeichnis in Ihrem Dateisystem.
- Rufen Sie https://apigee.com/edge auf und melden Sie sich an.
- Wählen Sie in der linken Navigationsleiste Develop > API Proxies aus.
- Klicken Sie auf + Proxy.
- Klicken Sie im Assistenten Proxy erstellen auf Proxy-Bundle hochladen.
- Wählen Sie die heruntergeladene Datei
oauth.zip
aus und klicken Sie auf Weiter. - Klicken Sie auf Erstellen.
- Klicken Sie nach Abschluss des Builds auf Proxy bearbeiten, um den neuen Proxy aufzurufen. im API-Proxy-Editor.
- Klicken Sie auf der Übersichtsseite des API-Proxy-Editors auf das Drop-down Deployment und wählen Sie Test aus. Dies ist die Testumgebung in Ihrer Organisation.
Klicken Sie in der Bestätigungsaufforderung auf Bereitstellen.
Wenn Sie noch einmal auf das Drop-down-Menü „Deployment“ klicken, bedeutet ein grünes Symbol, dass der Proxy in der Testumgebung bereitgestellt wird.
Weiter so! Sie haben eine API zum Generieren von Zugriffstoken heruntergeladen und bereitgestellt Proxy zu Ihrer Edge-Organisation.
OAuth-Ablauf und Richtlinie ansehen
Sehen wir uns genauer an, was der API-Proxy enthält.
- Klicken Sie im API-Proxy-Editor auf den Tab Develop. Auf der linken Seite
Navigator: Hier werden zwei Richtlinien angezeigt. Außerdem werden zwei
POST
angezeigt. Abläufe im AbschnittProxy Endpoints
. -
Klicken Sie unter AccessTokenClientCredential auf
Proxy Endpoints
In der XML-Codeansicht sehen Sie ein
Flow
namensAccessTokenClientCredential
:<Flow name="AccessTokenClientCredential"> <Description/> <Request> <Step> <Name>GenerateAccessTokenClient</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition> </Flow>
Ein Ablauf ist ein Verarbeitungsschritt in einem API-Proxy. In diesem Fall wird der Ablauf ausgelöst, wenn eine bestimmte Bedingung erfüllt ist. Dies wird als bedingter Fluss bezeichnet. Die Bedingung, definiert in Das Element
<Condition>
gibt an, dass bei einem API-Proxyaufruf an die Ressource/accesstoken
und das AnfrageverbPOST
ist, dann die RichtlinieGenerateAccessTokenClient
ausführen, die den Zugriff generiert Token. -
Betrachten wir nun die Richtlinie, die der bedingte Ablauf auslöst. Klicken Sie im Flussdiagramm auf das Richtliniensymbol GenerateAccessTokenClient.
Die folgende XML-Konfiguration wird in die Codeansicht geladen:<OAuthV2 name="GenerateAccessTokenClient"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in millseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <!-- This part is very important: most real OAuth 2.0 apps will want to use other grant types. In this case it is important to NOT include the "client_credentials" type because it allows a client to get access to a token with no user authentication --> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
Die Konfiguration umfasst Folgendes:
- Der
<Operation>
, der einer von mehreren vordefinierten Werten sein kann, legt die Funktionsweise der Richtlinie fest. In diesem Fall wird ein Zugriffstoken generiert. - Das Token läuft 1 Stunde (3.600.000 Millisekunden) nach Erstellung ab.
- In
<SupportedGrantTypes>
wird erwartet, dass der verwendete OAuth<GrantType>
client_credentials
ist (Austausch eines Verbraucherschlüssels und -geheimnisses gegen ein OAuth-Token). - Das zweite
<GrantType>
-Element informiert die Richtlinie darüber, wo der API-Aufruf für den „type“-Parameterparameter gemäß der OAuth 2.0-Spezifikation zu suchen ist. Sie sehen dies später im API-Aufruf. Die Gewährungsart kann auch im HTTP-Header (request.header.grant_type
) oder als Formularparameter (request.formparam.grant_type
) gesendet werden.
- Der
Derzeit müssen Sie mit dem API-Proxy nichts weiter tun. In späteren Schritten benötigen Sie diesen API-Proxy, um ein OAuth-Zugriffstoken zu generieren. Zuerst müssen Sie jedoch noch ein paar zusätzliche Schritte ausführen:
- Erstellen Sie den API-Proxy, der mit OAuth gesichert werden soll.
- Erstellen Sie ein paar weitere Artefakte, die zu dem Consumer-Key und Consumer-Secret führen, das Sie gegen ein Zugriffstoken austauschen müssen.
OAuth-geschützten API-Proxy erstellen
Jetzt erstellen Sie den API-Proxy, der geschützt werden soll. Dies ist der API-Aufruf, der einen gewünschten Inhalt zurückgibt. In diesem Fall ruft der API-Proxy den fiktiven Zieldienst von Apigee auf, um Ihre IP-Adresse zurückzugeben. Sie sehen diese Option jedoch nur, wenn Sie mit Ihrem API-Aufruf ein gültiges OAuth-Zugriffstoken übergeben.
Der API-Proxy, den Sie hier erstellen, enthält eine Richtlinie, die in der Anfrage nach einem OAuth-Token sucht.
- Wählen Sie in der linken Navigationsleiste Develop > API Proxies aus.
- Klicken Sie auf + Proxy.
- Wählen Sie im Assistenten Proxy erstellen die Option Reverse-Proxy (am häufigsten) aus. und klicken Sie auf Weiter.
- Konfigurieren Sie den Proxy so:
In diesem Feld tun Sie Folgendes Proxy-Name Eingeben: helloworld_oauth2
Projektbasispfad Ändern zu:
/hellooauth2
Der Projektbasispfad ist Teil der URL, die für Anfragen an den API-Proxy verwendet wird.
Vorhandene API Eingeben:
https://mocktarget.apigee.net/ip
Definiert die Ziel-URL, die Apigee Edge bei einer Anfrage an den API-Proxy aufruft.
Beschreibung Eingeben: hello world protected by OAuth
- Klicken Sie auf Next.
- Auf der Seite Common policies:
In diesem Feld tun Sie Folgendes Security: Authorization Wählen Sie OAuth 2.0 aus. - Klicken Sie auf Weiter.
- Klicken Sie auf der Seite Virtuelle Hosts auf Weiter.
- Achten Sie darauf, dass auf der Seite Build die Testumgebung ausgewählt ist. Klicken Sie auf Create and Deploy.
- Auf der Seite Summary (Zusammenfassung) sehen Sie eine Bestätigung, dass Ihr neuer API-Proxy erfolgreich erstellt und der API-Proxy für Ihren Test bereitgestellt wurde zu verbessern.
- Klicken Sie auf Proxy bearbeiten, um die Seite Übersicht für den API-Proxy anzuzeigen.
Beachten Sie, dass der API-Proxy dieses Mal automatisch bereitgestellt wird. Klicken Sie auf das Drop-down-Menü „Deployment“, um zu prüfen, ob sich neben der Testumgebung eine grüne Bereitstellung befindet.
Richtlinien ansehen
Sehen wir uns genauer an, was Sie erstellt haben.
- Klicken Sie im API-Proxy-Editor auf den Tab Develop. Sie werden sehen, dass dem Anfrageablauf des API-Proxys zwei Richtlinien hinzugefügt wurden:
- OAuth v2.0-Zugriffstoken überprüfen: Der API-Aufruf wird überprüft, um sicherzustellen, dass ein gültiges OAuth-Token vorhanden ist.
- Remove Header Authorization (Header-Autorisierung entfernen) – EineAssignMessage-Richtlinie, die entfernt das Zugriffstoken nach der Überprüfung, damit es nicht an den Zieldienst. Wenn der Zieldienst das OAuth-Zugriffstoken benötigt, würden Sie diese Richtlinie nicht verwenden.
-
Klicken Sie in der Ablaufansicht auf das Symbol OAuth v2.0-Zugriffstoken überprüfen und prüfen Sie die XML darunter im Codebereich.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="verify-oauth-v2-access-token"> <DisplayName>Verify OAuth v2.0 Access Token</DisplayName> <Operation>VerifyAccessToken</Operation> </OAuthV2>
Beachten Sie, dass
<Operation>
VerifyAccessToken
lautet. Der Vorgang definiert, was die Richtlinie tun soll. In diesem Fall prüft sie in der Anfrage nach einem gültigen OAuth-Token.
API-Produkt hinzufügen
So fügen Sie ein API-Produkt über die Apigee-Benutzeroberfläche hinzu:
- Wählen Sie Publish > API Products aus.
- Klicken Sie auf + API-Produkt.
- Geben Sie die Produktdetails für Ihr API-Produkt ein.
Feld Beschreibung Name Interner Name des API-Produkts. Geben Sie im Namen keine Sonderzeichen an.
Hinweis: Sobald der API-Produkt erstellt wurde, können Sie den Namen nicht mehr ändern. Zum Beispielehelloworld_oauth2-Product
Anzeigename Anzeigename für das API-Produkt. Der Anzeigename wird in der Benutzeroberfläche verwendet und Sie können jederzeit ändern. Wenn keine Angabe erfolgt, wird der Wert "Name" verwendet. Dieses Feld ist automatisch ausgefüllt unter Verwendung des Werts Name; können Sie den Inhalt bearbeiten oder löschen. Der Anzeigename kann Sonderzeichen. Beispiel: helloworld_oauth2-Product
.Beschreibung Beschreibung des API-Produkts. Umgebung Umgebungen, auf die das API-Produkt Zugriff gewährt. Wählen Sie die Umgebung aus, in der Sie den API-Proxy bereitgestellt haben. Beispiel: test
.Zugriff Wählen Sie Public aus. Zugriffsanfragen automatisch genehmigen Aktivieren Sie die automatische Genehmigung von Schlüsselanfragen für dieses API-Produkt aus einer beliebigen Anwendung. Kontingent Für diese Anleitung ignorieren. Erlaubte OAuth-Bereiche Für diese Anleitung ignorieren. - Wählen Sie im Feld API-Proxys den API-Proxy aus, den Sie gerade erstellt haben.
- Geben Sie im Feld Pfad „/“ ein. Ignorieren Sie die anderen Felder.
- Klicken Sie auf Speichern.
Einen Entwickler und eine App zur Organisation hinzufügen
Als Nächstes simulieren Sie den Workflow eines Entwicklers, der sich registriert, um Ihre APIs zu verwenden. Im Idealfall registrieren Entwickler sich und ihre Apps über Ihr Entwicklerportal. In diesem Schritt fügen Sie jedoch einen Entwickler und eine Anwendung als Administrator hinzu.
Entwickler haben eine oder mehrere Anwendungen, die Ihre APIs aufrufen. Jede Anwendung erhält einen eindeutigen Consumer-Key und ein Consumer-Secret. Durch diesen Schlüssel bzw. das Secret pro App erhalten Sie als API-Anbieter Detailliertere Kontrolle über den Zugriff auf Ihre APIs und detailliertere Analyseberichte zur API Traffic, da Edge weiß, welcher Entwickler und welche Anwendung zu welchem OAuth-Token gehören.
Entwickler erstellen
Erstellen wir nun einen Entwickler mit dem Namen Nigel Tufnel.
- Wählen Sie im Menü Veröffentlichen > Entwickler aus.
- Klicken Sie auf + Entwickler.
- Geben Sie im Fenster New Developer (Neuer Entwickler) Folgendes ein:
In diesem Feld Eingeben Vorname Nigel
Nachname Tufnel
Nutzername nigel
E-Mail nigel@example.com
- Klicken Sie auf Erstellen.
App registrieren
Erstellen wir nun eine App für Nigel.
- Wählen Sie Veröffentlichen > Apps aus.
- Klicken Sie auf + App.
- Geben Sie im Fenster New App (Neue App) Folgendes ein:
In diesem Feld tun Sie Folgendes Name und Anzeigename Eingeben: nigel_app
Entwickler Klicken Sie auf Entwickler und wählen Sie Nigel Tufnel (nigel@example.com)
aus.Callback URL und Hinweise Leer lassen - Klicken Sie unter Produkte auf Produkt hinzufügen.
- Wählen Sie helloworld_oauth2-Product aus.
- Klicken Sie auf Erstellen.
Consumer-Key und Consumer-Secret abrufen
Sie erhalten nun den Consumer-Key und das Consumer-Secret, die gegen ein OAuth-Zugriffstoken ausgetauscht werden.
- Achten Sie darauf, dass die Seite „nig_app“ angezeigt wird. Wenn nicht, klicken Sie auf der Seite „Apps“ (Veröffentlichen > Apps) auf nig_app.
-
Klicken Sie auf der Seite „nig_app“ in den Spalten Schlüssel und Secret auf Anzeigen. Beachten Sie, dass der Schlüssel/Secret dem „helloworld_oauth2-Product“ zugeordnet ist, das automatisch erstellt wurde.
- Kopieren und kopieren Sie den Schlüssel und das Secret. Fügen Sie sie in eine temporäre Textdatei ein. Sie benötigen sie in einem späteren Schritt, indem Sie den API-Proxy aufrufen, der diese Anmeldedaten gegen ein OAuth-Zugriffstoken austauschen.
Versuchen Sie, die API aufzurufen, um Ihre IP-Adresse abzurufen (fehlgeschlagen)
Rufen Sie den geschützten API-Proxy, der Ihre IP-Adresse zurückgeben soll, möglichst auf. Führen Sie den folgenden cURL-Befehl in einem Terminalfenster aus und ersetzen Sie dabei Ihren Edge-Browser.
Name der Organisation. Das Wort test
in der URL ist die Testumgebung Ihrer Organisation, in der Sie Ihre Proxys bereitgestellt haben. Der Proxy-Basispfad ist /hellooauth2
, derselbe Basispfad, den Sie beim Erstellen des Proxys angegeben haben.
Beachten Sie, dass Sie kein OAuth-Zugriffstoken an den Aufruf übergeben.
curl https://ORG_NAME-test.apigee.net/hellooauth2
Da der API-Proxy die Richtlinie OAuth v2.0 Access Token überprüfen auf ein gültiges OAuth-Token prüft, sollte der Aufruf mit der folgenden Meldung fehlschlagen:
{"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}
In diesem Fall ist ein Fehler aufgetreten. Das bedeutet, dass Ihr API-Proxy viel sicherer ist. Nur vertrauenswürdige Anwendungen mit einem gültigen OAuth-Zugriffstoken können diese API aufrufen.
Rufen Sie ein OAuth-Zugriffstoken ab.
Jetzt kommen wir zum großen Gewinn. Sie sind dabei, den kopierten Schlüssel und das Secret in einer Textdatei zu verwenden und gegen ein OAuth-Zugriffstoken auszutauschen. Jetzt starten Sie einen API-Aufruf an den importierten API-Beispielproxy OAuth, mit dem ein API-Zugriffstoken generiert wird.
Führen Sie mit diesem Schlüssel und diesem Secret den folgenden cURL-Aufruf aus. Beachten Sie, dass das Protokoll
https
) und ersetzen Sie dabei den Namen Ihrer Edge-Organisation, Ihren Schlüssel und Ihren
Secret, wobei Folgendes angegeben ist:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \ "https://ORG_NAME-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials" \ -d "client_id=CLIENT_KEY&client_secret=CLIENT_SECRET"
Wenn Sie einen Aufruf wie Postman zum Aufrufen verwenden, werden client_id
und client_secret
in den Hauptteil der Anfrage eingefügt und müssen x-www-form-urlencoded
sein.
Es sollte eine Antwort in folgender Form zurückgegeben werden:
{ "issued_at" : "1466025769306", "application_name" : "716bbe61-f14a-4d85-9b56-a62ff8e0d347", "scope" : "", "status" : "approved", "api_product_list" : "[helloworld_oauth2-Product]", "expires_in" : "3599", //--in seconds "developer.email" : "nigel@example.com", "token_type" : "BearerToken", "client_id" : "xNnREu1DNGfiwzQZ5HUN8IAUwZSW1GZW", "access_token" : "GTPY9VUHCqKVMRB0cHxnmAp0RXc0", "organization_name" : "myOrg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Sie haben Ihr OAuth-Zugriffstoken erhalten. Kopieren Sie den Wert des Zugriffs-Tokens (ohne Anführungszeichen) und fügen Sie ihn in Ihre Textdatei ein. Sie werden ihn gleich verwenden.
Was ist gerade passiert?
Denken Sie daran, dass Sie sich den bedingten Ablauf im
oauth-Proxy, der angibt, ob der Ressourcen-URI
/accesstoken
und das Anfrageverb ist POST
, um den
GenerateAccessTokenClient
: OAuth-Richtlinie, die ein Zugriffstoken generiert? Ihr cURL-Befehl erfüllt diese Bedingungen, sodass die OAuth-Richtlinie ausgeführt wurde. Sie hat Ihren Consumer-Key und Ihr Consumer-Secret verifiziert und gegen ein OAuth-Token ausgetauscht, das in einer Stunde abläuft.
API mit einem Zugriffstoken aufrufen (erfolgreich)
Mit dem Zugriffstoken können Sie nun den API-Proxy aufrufen. Führen Sie den folgenden cURL-Aufruf aus: Ersetzen Sie Ihren Edge-Organisationsnamen und das Zugriffstoken.
curl https://ORG_NAME-test.apigee.net/hellooauth2 -H "Authorization: Bearer TOKEN"
Sie sollten nun einen erfolgreichen Aufruf an den API-Proxy anfordern, der Ihre IP-Adresse zurückgibt. Beispiel:
{"ip":"::ffff:192.168.14.136"}
Sie können diesen API-Aufruf für etwa eine Stunde wiederholen, nach deren Ablauf das Zugriffstoken abläuft. Für den Aufruf nach einer Stunde müssen Sie mit den vorherigen Schritten ein neues Zugriffstoken generieren.
Glückwunsch! Sie haben einen API-Proxy erstellt und geschützt, indem ein gültiges OAuth-Zugriffstoken in den Aufruf eingefügt wurde.
Weitere Informationen
- OAuth-Startseite
- OAuthV2-Richtlinie
- API-Proxys herunterladen (in diesem Artikel wird gezeigt, wie Sie einen API-Proxy in einer ZIP-Datei wie die von Ihnen heruntergeladene ZIP-Datei bündeln)