API sichern, indem Sie API-Schlüssel anfordern

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Video: In diesem kurzen Video erfahren Sie, wie Sie Ihre API sichern.

Aufgaben in diesem Lab

In dieser Anleitung wird Folgendes erläutert:

  • Erstellen Sie einen API-Proxy, der einen API-Schlüssel erfordert.
  • Erstellen Sie ein API-Produkt, einen Entwickler und eine Entwickler-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 API-Schlüssel.

Wenn eine Anwendung eine Anfrage an einen API-Proxy sendet, der zum Prüfen eines API-Schlüssels konfiguriert ist, muss die Anwendung einen gültigen Schlüssel bereitstellen. Zur Laufzeit prüft die API-Schlüsselrichtlinie, ob der bereitgestellte API-Schlüssel angegeben wurde:

  • 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.

API-Proxy erstellen

Apigee in der Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Proxy-Entwicklung > API-Proxys auf.

    Zu „API-Proxys“

  2. Wählen Sie im Google Cloud-Bereich in der Projektauswahl Ihre Organisation aus. Der Name der Organisation entspricht dem Namen Ihres Google Cloud-Projekts.
  3. Klicken Sie auf + Erstellen.
  4. Wählen Sie im Bereich Proxy erstellen unter Proxy-Vorlage die Option Reverse-Proxy (häufigste Quelle) aus. Ein Reverse-Proxy leitet eingehenden Traffic an einen Back-End-Dienst weiter.
  5. Konfigurieren Sie den Proxy so:
    Name Wert
    Proxy-Name helloworld_apikey
    Basispfad

    /helloapikey

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

    Beschreibung hello world protected by API key
    Ziel (vorhandene API)

    http://mocktarget.apigee.net

    Dies definiert die Ziel-URL, die Apigee für eine Anfrage an den API-Proxy aufruft. Dieses Ziel gibt einfach eine einfache Antwort zurück: Hello, Guest!.

  6. Klicken Sie auf Weiter.
  7. Bereitstellen (optional). Lassen Sie diese Felder leer.
  8. Klicken Sie auf Erstellen.
  9. Apigee erstellt den neuen Proxy und zeigt die Zusammenfassung der Proxydetails im Bereich Proxy-Zusammenfassung an.

Klassische UI

  1. Wechseln Sie zur Apigee-Benutzeroberfläche und melden Sie sich an.
  2. Wählen Sie Ihre Organisation im Drop-down-Menü oben links in der Benutzeroberfläche aus.
  3. Klicken Sie auf Entwickeln > API-Proxys, um die Liste der API-Proxys aufzurufen.

  4. Klicken Sie auf Neu erstellen.
    Schaltfläche „Proxy erstellen“
  5. Wählen Sie im Assistenten zum Erstellen eines Proxys die Option Reverse proxy (am häufigsten) aus.
  6. Konfigurieren Sie den Proxy 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.

    Beschreibung Eingeben: hello world protected by API key
    Ziel (vorhandene API)

    Eingeben: http://mocktarget.apigee.net

    Dies definiert die Ziel-URL, die Apigee für eine Anfrage an den API-Proxy aufruft. Dieses Ziel gibt einfach eine einfache Antwort zurück: Hello, Guest!.

  7. Klicken Sie auf Weiter.
  8. Wählen Sie auf der Seite Allgemeine Richtlinien die Option API-Schlüssel aus. Mit dieser Option werden dem API-Proxy automatisch zwei Richtlinien hinzugefügt und ein API-Produkt erstellt, das zum Generieren des API-Schlüssels erforderlich ist.
  9. Klicken Sie auf Weiter.
  10. Prüfen Sie auf der Zusammenfassungsseite, ob eine Bereitstellungsumgebung ausgewählt ist. Klicken Sie dann auf Erstellen und bereitstellen.
  11. Klicken Sie auf Proxy bearbeiten, um die Übersichtsseite für den API-Proxy aufzurufen.

Richtlinien ansehen

Apigee in der Cloud Console

  1. Klicken Sie im Bereich Proxy summary für den Proxy helloworld_apikey auf den Tab Develop.
  2. Klicken Sie im Menü Richtlinien auf  Richtlinie hinzufügen.
  3. Wählen Sie im Bereich Richtlinie erstellen unter Sicherheit die Option API-Schlüssel überprüfen aus.
  4. Füllen Sie im Bereich API-Schlüssel bestätigen die erforderlichen Felder in den Abschnitten Name und Anzeigename mit den folgenden Werten aus:
    • Name: Geben Sie einen Richtliniennamen ein. Beispiel: VerifyAPIKey.
    • Anzeigename: Geben Sie den Namen der Richtlinie ein, der in der Benutzeroberfläche verwendet werden soll. Beispiel: Verify API Key.
  5. Klicken Sie auf Erstellen.
  6. Klicken Sie auf , um eine weitere Richtlinie hinzuzufügen.
  7. Wählen Sie im Bereich Richtlinie erstellen unter Mediation die Option Nachricht zuweisen aus.
  8. Füllen Sie im Bereich Mitteilung zuweisen die erforderlichen Felder in den Abschnitten Name und Anzeigename mit den folgenden Werten aus:
    • Name: Geben Sie einen Richtliniennamen ein. Beispiel: AssignMessage.
    • Anzeigename: Geben Sie den Namen der Richtlinie ein, der in der Benutzeroberfläche verwendet werden soll. Beispiel: Assign Message.
  9. Klicken Sie auf Erstellen.
  10. Das <APIKey>-Element im XML-Code unten gibt den Speicherort des API-Schlüssels in der eingehenden Anfrage an. Standardmäßig ruft die Richtlinie den Schlüssel aus einem Abfrageparameter namens apikey in der HTTP-Anfrage ab.
    <APIKey ref="request.queryparam.apikey" />

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

  11. Aktualisieren Sie den Inhalt der Richtlinie Assign Message (Nachricht zuweisen) auf Folgendes:
  12. <AssignMessage async="false" continueOnError="false" enabled="true" name="remove-query-param-apikey">
        <DisplayName>Remove Query Param apikey</DisplayName>
        <Remove>
            <QueryParams>
                <QueryParam name="apikey"/>
            </QueryParams>
        </Remove>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
  13. Fügen Sie die Richtlinien VerifyApiKey und Remove Query Param apikey hinzu.
    1. Klicken Sie im Menü Proxy Endpoints auf Preflow.
    2. Klicken Sie im Bereich Anfrage des visuellen Editors auf  Richtlinienschritt hinzufügen.
    3. Wählen Sie im Bereich Richtlinienschritt hinzufügen die Option API-Schlüssel überprüfen aus.
    4. Klicken Sie auf Hinzufügen.
    5. Klicken Sie im Bereich Anfrage des visuellen Editors auf  Richtlinienschritt hinzufügen.
    6. Wählen Sie im Bereich Richtlinienschritt hinzufügen die Option Entferne den Abfrageparameter „apikey“ aus.
    7. Klicken Sie auf Hinzufügen.
  14. Klicken Sie auf Speichern.
  15. Proxy in einer Umgebung bereitstellen:
    1. Klicken Sie auf Bereitstellen.
    2. Wählen Sie eine Überarbeitung und eine Umgebung aus.
    3. Klicken Sie auf Bereitstellen.
  16. Testen Sie Ihre Änderungen, indem Sie die API wie unter API aufrufen beschrieben aufrufen.

Klassische UI

  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 Richtlinie zum Zuweisen von Nachrichten, die den API-Schlüssel nach der Überprüfung entfernt, damit er nicht unnötig weitergegeben und offengelegt wird.
  2. Klicken Sie auf das Symbol „API-Schlüsselrichtlinie überprüfen“ in der Ablaufansicht und sehen Sie sich die XML-Konfiguration der Richtlinie in der unteren Codeansicht an. Das Element <APIKey> teilt der Richtlinie mit, wo es 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:

    curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey

    Dabei ist YOUR ENV_GROUP_HOSTNAME der Hostname der Umgebungsgruppe. Weitere Informationen finden Sie unter Hostname der Umgebungsgruppe finden.

    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 erhalten Sie den erforderlichen API-Schlüssel.

API-Produkt hinzufügen

Apigee in der Cloud Console

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

  1. Rufen Sie in der Google Cloud Console die Seite Verteilung > API-Produkte auf:

    Zu den API-Produkten

  2. Klicken Sie auf +Erstellen.
  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.
    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.
    Beschreibung Beschreibung des API-Produkts.
    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. Klicken Sie im Bereich Vorgänge auf Vorgang hinzufügen.
  5. Wählen Sie im Feld API-Proxy den soeben erstellten API-Proxy aus.
  6. Geben Sie im Feld Pfad „/“ ein. Ignorieren Sie die anderen Felder.
  7. Klicken Sie auf Speichern, um den Vorgang zu speichern.
  8. Klicken Sie auf Speichern, um das API-Produkt zu speichern.

Weitere Informationen zum Hinzufügen eines API-Produkts finden Sie unter API-Produkt erstellen.

Klassische UI

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 +Erstellen.
  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 der API-Produkt erstellt wurde, können Sie den Namen nicht mehr ändern.
    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. können Sie den Inhalt bearbeiten oder löschen. Der Anzeigename kann Sonderzeichen enthalten.
    Beschreibung Beschreibung des API-Produkts.
    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. Klicken Sie unter Vorgänge auf VORGANG HINZUFÜGEN.
  5. Wählen Sie im Feld „API-Proxy“ den soeben erstellten API-Proxy aus.
  6. Geben Sie im Feld „Pfad“ „/“ ein. Ignorieren Sie die anderen Felder.
  7. Klicken Sie auf Speichern, um den Vorgang zu speichern.
  8. Klicken Sie auf Speichern, um das API-Produkt zu speichern.

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 Anwendungen, die Ihre APIs aufrufen, und jede Anwendung 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

Apigee in der Cloud Console

So erstellen Sie einen Entwickler:

  1. Rufen Sie in der Google Cloud Console die Seite Verteilung > Entwickler auf:

    Zu „Entwickler“

  2. Klicken Sie auf + Erstellen.
  3. Geben Sie im Fenster Entwickler hinzufügen Folgendes ein:
    Feld Wert
    Vorname Keyser
    Nachname Soze
    E-Mail keyser@example.com
    Nutzername keyser
  4. Klicken Sie auf Hinzufügen.

Weitere Informationen zum Erstellen eines Entwicklers finden Sie unter App-Entwickler registrieren.

Klassische UI

So erstellen Sie einen Entwickler:

  1. Wählen Sie im Menü Veröffentlichen > Entwickler aus.
    Hinweis: Wenn Sie sich noch auf dem Bildschirm „Entwicklung“ befinden, klicken Sie neben DEVELOP auf „<“, um das Wählen Sie 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

Apigee in der Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Vertrieb > Apps auf:

    Zu Apps wechseln

  2. Klicken Sie auf + Erstellen.
  3. Geben Sie im Fenster App erstellen Folgendes ein:
    Feld Wert
    App-Name Eingeben: keyser_app
    Anzeigename Eingeben: keyser_app
    Developer Wählen Sie Keyser Soze (keyser@example.com) aus.
    Callback-URL Leer lassen
    Hinweise Leer lassen
  4. Klicken Sie im Abschnitt „Anmeldedaten“ auf Anmeldedaten hinzufügen.
  5. Wählen Sie Nie aus. Die Anmeldedaten für diese Anwendung laufen nie ab.
  6. Klicken Sie auf Produkte hinzufügen.
  7. Wählen Sie das Produkt aus, das Sie gerade erstellt haben.
  8. Klicken Sie auf Hinzufügen.
  9. Klicken Sie auf Erstellen.

Weitere Informationen zum Registrieren einer App finden Sie unter App registrieren.

Klassische UI

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 Entwickler-App" Folgendes ein:
    Feld Wert
    Name und Anzeigename Eingeben: keyser_app
    Developer Wählen Sie Keyser Soze (keyser@example.com) aus.
    Callback URL und Hinweise Leer lassen
  4. Wählen Sie im Abschnitt "Anmeldedaten" die Option Nie aus. Die Anmeldedaten für diese Anwendung laufen nie ab.
  5. Klicken Sie auf Produkt hinzufügen.
  6. Wählen Sie das Produkt aus, das Sie gerade erstellt haben.
  7. Klicken Sie auf Erstellen.

API-Schlüssel abrufen

Apigee in der Cloud Console

So rufen Sie den API-Schlüssel ab:

  1. Rufen Sie in der Google Cloud Console die Seite Vertrieb > Apps auf.

    Zu Apps wechseln

  2. Wählen Sie die gewünschte App aus der Liste der Apps aus.
  3. Klicken Sie auf der Seite App ansehen unter Anmeldedaten neben dem Feld Schlüssel auf . Beachten Sie, dass der Schlüssel mit dem von Ihnen erstellten Produkt verknüpft ist.
  4. Klicken Sie auf  Kopieren. Sie benötigen diesen Schlüssel im nächsten Schritt.

Klassische UI

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 mit dem von Ihnen erstellten Produkt 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. Fügen Sie den API-Schlüssel wie gezeigt als Abfrageparameter ein. Der Abfrageparameter darf keine zusätzlichen Leerzeichen enthalten.

curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=YOUR_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.

Apigee in der Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Proxy-Entwicklung > API-Proxys auf.
  2. Zu „API-Proxys“

  3. Wählen Sie den gewünschten Proxy aus der Liste der Proxys aus.
  4. Klicken Sie auf der Seite Proxydetails auf Entwickeln.
  5. Ändern Sie die Richtlinien-XML, damit die Richtlinie im Header und nicht im Queryparam nach den Richtlinien sucht:
  6. <APIKey ref="request.header.x-apikey"/>
  7. Klicken Sie auf Speichern, um die Änderungen zu speichern.
  8. Klicken Sie auf Bereitstellen.
  9. Wählen Sie eine Überarbeitung und eine Umgebung aus.
  10. Klicken Sie auf Bereitstellen.
  11. 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: YOUR_API_KEY" http://YOUR_ENV_GROUP_HOSTNAME/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>

Klassische UI

  1. API-Proxy bearbeiten. Wählen Sie Develop > API Proxies > helloworld_apikey und dann die Ansicht Develop 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 und stellen Sie ihn mit Bereitstellen bereit.
  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_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/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

Im Folgenden finden Sie einige Themen zu API-Produkten und -Schlüsseln:

Der API-Schutz umfasst häufig zusätzliche Sicherheitsmaßnahmen wie OAuth, ein offenes Protokoll, das Anmeldedaten wie Nutzername und Passwort gegen Zugriffstokens austauscht. Zugriffstokens sind lange, zufällige Strings, die über eine Nachrichtenpipeline weitergegeben werden können, auch von der App zur Anwendung, ohne dabei die ursprünglichen Anmeldedaten zu beeinträchtigen.

Eine Übersicht über sicherheitsrelevante Themen finden Sie unter Proxy sichern.