API sichern, indem Sie API-Schlüssel anfordern

Sie lesen gerade die Dokumentation zu Apigee Edge.
Apigee X-Dokumentation aufrufen
info

Lerninhalte

In dieser Anleitung lernen Sie Folgendes:

  • Erstellen Sie einen API-Proxy, der einen API-Schlüssel erfordert.
  • Ein API-Produkt hinzufügen
  • Fügen Sie einen Entwickler hinzu und registrieren Sie eine App.
  • API mit einem API-Schlüssel aufrufen

Es ist wichtig, Ihre API vor nicht autorisiertem Zugriff zu schützen. Eine Möglichkeit hierfür ist die Verwendung von API-Schlüsseln (auch als öffentliche Schlüssel, Consumer-Schlüssel oder App-Schlüssel bezeichnet).

Wenn eine App eine Anfrage an Ihre API sendet, muss die App einen gültigen Schlüssel bereitstellen. Zur Laufzeit prüft die Richtlinie „API-Schlüssel prüfen“, ob der bereitgestellte API-Schlüssel:

  • Ist gültig
  • Wurde nicht widerrufen
  • Entspricht dem API-Schlüssel für das API-Produkt, das die angeforderten Ressourcen bereitstellt.

Wenn der Schlüssel gültig ist, ist die Anfrage zulässig. Ist der Schlüssel ungültig, führt die Anfrage zu einem Autorisierungsfehler.

In dieser Anleitung erstellen Sie einen API-Proxy, der einen gültigen API-Schlüssel für den Zugriff benötigt.

Voraussetzungen

  • Ein Apigee Edge-Konto. Wenn Sie noch kein Konto haben, können Sie sich wie unter Apigee Edge-Konto erstellen beschrieben registrieren.
  • Ein Webbrowser, der einen API-Aufruf durchführt.
  • (Für den Abschnitt über den zusätzlichen Kredit nicht erforderlich) cURL ist auf Ihrem Rechner installiert, um API-Aufrufe von der Befehlszeile aus durchzuführen.

API-Proxy erstellen

Über das „Mocktarget“

Der simulierte Zieldienst mocktarget wird bei Apigee gehostet und gibt einfache Daten zurück. Ein API-Schlüssel oder ein Zugriffstoken sind nicht erforderlich. Sie können sogar über einen Webbrowser darauf zugreifen. Klicken Sie zum Testen auf folgenden Link:

http://mocktarget.apigee.net

Das Ziel gibt Hello, Guest! zurück. Mit der Ressource /help erhalten Sie eine Hilfe zu anderen verfügbaren API-Ressourcen.

  1. Rufen Sie https://apigee.com/edge auf und melden Sie sich an.
  2. Wechseln Sie zur gewünschten Organisation. Klicken Sie dazu oben in der seitlichen Navigationsleiste auf Ihren Nutzernamen, um das Menü des Nutzerprofils aufzurufen, und wählen Sie die Organisation aus der Liste aus.

    Organisation im Menü „Nutzerprofil“ auswählen
  3. Klicken Sie auf der Landingpage auf API-Proxys, um die Liste der API-Proxys aufzurufen.

    Edge APIs-Menü
  4. Klicken Sie auf + Proxy.
    Schaltfläche "Proxy erstellen"
  5. Wählen Sie auf der Seite Proxy erstellen die Option Reverse-Proxy (am häufigsten) aus.
  6. Konfigurieren Sie den Proxy auf der Seite Proxydetails so:
    In diesem Feld tun Sie Folgendes
    Proxy-Name Eingeben: helloworld_apikey
    Projektbasispfad

    Ändern zu: /helloapikey

    Der Projektbasispfad ist Teil der URL, die für Anfragen an den API-Proxy verwendet wird.

    Hinweis: Informationen zu den Empfehlungen von Apigee zur API-Versionsverwaltung finden Sie unter Versionsverwaltung im E-Book Web API Design: The Missing Link.

    Vorhandene API

    Eingeben: http://mocktarget.apigee.net

    Definiert die Ziel-URL, die Apigee Edge bei einer Anfrage an den API-Proxy aufruft.

    Beschreibung Eingeben: hello world protected by API key
  7. Klicken Sie auf Weiter.
  8. Wählen Sie auf der Seite Allgemeine Richtlinien unter Sicherheit: Autorisierung die Option API-Schlüssel aus und klicken Sie dann auf Weiter. Dadurch werden Ihrem API-Proxy zwei Richtlinien hinzugefügt.
  9. Wählen Sie auf der Seite Virtuelle Hosts die Optionen default und secure aus und klicken Sie dann auf Weiter. Wenn Sie default auswählen, können Sie Ihre API mit http:// aufrufen. Wenn Sie secure auswählen, können Sie Ihre API mit https:// aufrufen.
  10. Achten Sie darauf, dass auf der Seite Zusammenfassung die Bereitstellungsumgebung Test ausgewählt ist. Klicken Sie dann auf Erstellen und bereitstellen.
  11. Sie sehen eine Bestätigung, dass Ihr neuer API-Proxy und ein API-Produkt erstellt wurden und der API-Proxy in Ihrer Testumgebung bereitgestellt wurde.
  12. Klicken Sie auf Proxy bearbeiten, um die Seite Übersicht für den API-Proxy aufzurufen.

Richtlinien ansehen

  1. Klicken Sie im API-Proxy-Editor auf den Tab Develop. Sie werden sehen, dass dem Anfrageablauf des API-Proxys zwei Richtlinien hinzugefügt wurden:
    • API-Schlüssel überprüfen:Prüft den API-Aufruf, um zu gewährleisten, dass ein gültiger API-Schlüssel vorhanden ist (als Abfrageparameter gesendet).
    • Abfrage-Param-API-Schlüssel entfernen:Eine AssignMessage-Richtlinie, die den API-Schlüssel nach der Überprüfung entfernt, damit er nicht unnötig weitergegeben und offengelegt wird.
  2. Klicken Sie in der Ablaufansicht auf das Symbol für die Richtlinie „API-Schlüssel überprüfen“ und sehen Sie sich die XML-Konfiguration der Richtlinie in der unteren Codeansicht an. Das Element <APIKey> teilt der Richtlinie mit, wo sie bei einem Aufruf nach dem API-Schlüssel suchen soll. Standardmäßig wird in der HTTP-Anfrage nach dem Schlüssel als Abfrageparameter mit dem Namen apikey gesucht:

    <APIKey ref="request.queryparam.apikey" />

    Der Name apikey ist beliebig. Dies kann ein beliebiges Attribut sein, das den API-Schlüssel enthält.

Versuchen Sie, die API aufzurufen

In diesem Schritt führen Sie einen erfolgreichen API-Aufruf direkt an den Zieldienst aus. Anschließend führen Sie einen fehlgeschlagenen Aufruf an den API-Proxy durch, um festzustellen, wie er durch die Richtlinien geschützt wird.

  1. Erfolg

    Rufen Sie in einem Webbrowser die folgende Adresse auf. Dies ist der Zieldienst, für den der API-Proxy zur Weiterleitung der Anfrage konfiguriert ist. Sie leiten ihn jedoch vorerst weiter:

    http://mocktarget.apigee.net

    Sie sollten folgende erfolgreiche Antwort erhalten: Hello, Guest!.

  2. Fehler

    Versuchen Sie nun, den API-Proxy aufzurufen:

    http://ORG_NAME-test.apigee.net/helloapikey

    Ersetzen Sie dabei ORG_NAME durch den Namen Ihrer Edge-Organisation.

    Ohne die Richtlinie „API-Schlüssel überprüfen“ würde dieser Aufruf die gleiche Antwort wie der vorherige Aufruf liefern. In diesem Fall erhalten Sie jedoch die folgende Fehlermeldung:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    Das heißt richtigerweise, dass Sie keinen gültigen API-Schlüssel als Abfrageparameter übergeben haben.

In den nächsten Schritten fügen Sie ein API-Produkt hinzu.

API-Produkt hinzufügen

So fügen Sie ein API-Produkt über die Apigee-Benutzeroberfläche hinzu:

  1. Wählen Sie Publish > API Products aus.
  2. Klicken Sie auf +API Product.
  3. 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 das API-Produkt erstellt wurde, können Sie den Namen nicht mehr ändern. Beispiel: helloworld_apikey-Product.
    Anzeigename Anzeigename für das API-Produkt. Der Anzeigename wird in der Benutzeroberfläche verwendet und kann jederzeit bearbeitet werden. Wenn keine Angabe erfolgt, wird der Wert „Name“ verwendet. Dieses Feld wird automatisch mit dem Wert „Name“ ausgefüllt. Sie können den Inhalt bearbeiten oder löschen. Der Anzeigename kann Sonderzeichen enthalten. Beispiel: helloworld_apikey-Product.
    Beschreibung Beschreibung des API-Produkts. Beispiel: Test product for tutorial.
    Umgebung Umgebungen, auf die das API-Produkt Zugriff gewährt. Beispiel: test oder prod.
    Zugriff Wählen Sie Öffentlich 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.
  4. Wählen Sie im Abschnitt „API-Ressourcen“ den soeben erstellten API-Proxy aus. Beispiel: helloworld_apikey.
  5. Klicken Sie auf Hinzufügen.
  6. Fügen Sie im Bereich Pfade den Pfad „/“ hinzu.
  7. Klicken Sie auf Hinzufügen.
  8. Klicken Sie auf Speichern.

In den nächsten Schritten erhalten Sie den erforderlichen API-Schlüssel.

Einen Entwickler und eine App zur Organisation hinzufügen

Als Nächstes simulieren wir den Workflow eines Entwicklers, der sich registriert, um Ihre APIs zu verwenden. Ein Entwickler hat eine oder mehrere Apps, die Ihre APIs aufrufen, und jede App erhält einen eindeutigen API-Schlüssel. Dadurch erhalten Sie als API-Anbieter eine bessere Kontrolle über den Zugriff auf Ihre APIs und detailliertere Berichte zum API-Traffic nach App.

Entwickler erstellen

So erstellen Sie einen Entwickler:

  1. Wählen Sie im Menü Veröffentlichen > Entwickler aus.
  2. Klicken Sie auf + Entwickler.
  3. Geben Sie im Fenster "New Developer" Folgendes ein:

    In diesem Feld Eingabetaste
    Vorname Keyser
    Nachname Soze
    Nutzername keyser
    E-Mail keyser@example.com
  4. Klicken Sie auf Erstellen.

App registrieren

So registrieren Sie eine Entwickler-App:

  1. Wählen Sie Veröffentlichen > Apps aus.
  2. Klicken Sie auf + App.
  3. Geben Sie im Fenster Neue App Folgendes ein:

    p
    In diesem Feld tun Sie Folgendes
    Name und Anzeigename Eingeben: keyser_app
    Unternehmen / Entwickler Wählen Sie Developer aus.
    Entwickler Wählen Sie Keyser Soze (keyser@example.com) aus.
    Callback URL und Hinweise Leer lassen
  4. Wählen Sie im Abschnitt Anmeldedaten im Menü Ablaufdatum die Option Nie aus. Die Anmeldedaten für diese Anwendung laufen nie ab.
  5. Klicken Sie unter Produkte auf Produkt hinzufügen.
  6. Wählen Sie helloworld_apikey-Product aus.
  7. Klicken Sie auf Hinzufügen.
  8. Klicken Sie rechts oben im Abschnitt App-Details auf Erstellen, um Ihre Änderungen zu speichern.

API-Schlüssel abrufen

So rufen Sie den API-Schlüssel ab:

  1. Klicken Sie auf der Seite Apps (Veröffentlichen > Apps) auf keyser_app.
  2. Klicken Sie auf der Seite keyser_app im Abschnitt Anmeldedaten neben Schlüssel auf Anzeigen. Beachten Sie, dass der Schlüssel im Bereich Produkt mit helloworld_apikey verknüpft ist.

    .
  3. Wählen Sie den Schlüssel aus und kopieren Sie ihn. Sie benötigen sie im nächsten Schritt.

API mit einem Schlüssel aufrufen

Mit dem API-Schlüssel können Sie jetzt den API-Proxy aufrufen. Geben Sie Folgendes in Ihren Webbrowser ein: Ersetzen Sie ORG_NAME durch den Namen Ihrer Edge-Organisation und API_KEY durch den API-Schlüssel. Der Abfrageparameter darf keine zusätzlichen Leerzeichen enthalten.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Wenn Sie jetzt den API-Proxy aufrufen, erhalten Sie diese Antwort: Hello, Guest!

Glückwunsch! Sie haben einen API-Proxy erstellt und geschützt, indem ein gültiger API-Schlüssel in den Aufruf eingefügt wurde.

Es ist allgemein nicht empfehlenswert, einen API-Schlüssel als Abfrageparameter zu übergeben. Sie sollten stattdessen eine Übergabe im HTTP-Header vornehmen.

Best Practice: Übergeben des Schlüssels im HTTP-Header

In diesem Schritt werden Sie den Proxy so modifizieren, dass er nach dem API-Schlüssel in einem Header namens x-apikey sucht.

  1. API-Proxy bearbeiten. Wählen Sie Entwickeln > API-Proxys > helloworld_apikey und dann die Ansicht Entwickeln aus.
  2. Wählen Sie die Richtlinie API-Schlüssel überprüfen aus und ändern Sie die Richtlinien-XML, damit die Richtlinie in der Datei header und nicht im queryparam nach den Richtlinien sucht:

    <APIKey ref="request.header.x-apikey"/>
  3. Speichern Sie den API-Proxy, um die Änderung bereitzustellen.
  4. Führen Sie den folgenden API-Aufruf mit cURL aus, um den API-Schlüssel als Header mit dem Namen x-apikey zu übergeben. Denken Sie daran, den Namen Ihrer Organisation zu ersetzen.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Wenn Sie die Änderung vollständig vornehmen möchten, müssen Sie außerdem die Richtlinie „Nachricht zuweisen“ konfigurieren, um den Header anstelle des Abfrageparameters zu entfernen. Beispiel:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

Weitere Informationen

Folgende Themen beziehen sich direkt auf diese Anleitung:

Etwas genauer, der Schutz von APIs mit API-Schlüsseln ist nur ein Teil der Geschichte. Der API-Schutz umfasst häufig zusätzliche Sicherheitsmaßnahmen wie OAuth.

OAuth ist ein offenes Protokoll, das Anmeldedaten wie Nutzername und Passwort gegen Zugriffstokens austauscht. Zugriffstokens sind lange, zufällige Strings, die an eine Nachrichtenpipeline weitergegeben werden können, auch von der App zur Anwendung, ohne dabei die ursprünglichen Anmeldedaten zu beeinträchtigen. Zugriffstokens haben häufig nur einen kurzen Zeitraum, sodass immer neue generiert werden.