Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Um eine API-Schlüsselvalidierung für eine API einzurichten, hängen Sie eine Richtlinie des Typs "VerifyAPIKey" (API-Schlüssel prüfen) an. Die einzige Einstellung, die dabei für eine VerifyAPIKey-Richtlinie festgelegt werden muss, ist der erwartete Speicherort des API-Schlüssels in der Clientanfrage. Der API-Proxy prüft den von Ihnen angegebenen Speicherort und extrahiert den API-Schlüssel. Wenn der API-Schlüssel am erwarteten Speicherort nicht vorhanden ist, wird ein Fehler ausgegeben und die Anfrage abgelehnt. API-Schlüssel können in einem Abfrageparameter, in einem Formularparameter oder in einem HTTP-Header enthalten sein.
Beispiel: Die Richtlinienkonfiguration unten definiert den erwarteten Schlüsselstandort als Abfrageparameter mit dem Namen apikey
. Einer erfolgreichen Anfrage muss der API-Schlüssel als Abfrageparameter angehängt sein, z. B. ?apikey=Y7yeiuhcbKJHD790
.
Erstellen Sie folgende Richtlinie, um API-Schlüssel zu prüfen:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Diese Richtlinie kann an beliebige APIs angehängt werden, die Sie schützen möchten.
Eine umfassende Dokumentation dieses Richtlinientyps finden Sie in der Richtlinienreferenz unter VerifyAPIKey-Richtlinie.
API-Proxys verarbeiten automatisch alle HTTP-Header und Abfrageparameter, die in der Anfrage angegeben sind. Daher wird empfohlen, den API-Schlüssel nach der Prüfung aus der Nachricht zu entfernen, damit er nicht an den Back-End-Dienst übertragen wird. Dazu können Sie eine Richtlinie des Typs AssignMessage
in folgender Weise verwenden:
<AssignMessage name="StripApiKey"> <DisplayName>Remove Query Param</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"></AssignTo> </AssignMessage>
Richtlinienbindung
Die Richtlinien müssen als Verarbeitungsschritte an einen API-Proxy-Ablauf angehängt werden. Durch Anwenden der Richtlinie auf Anfrage-PreFlow
werden API-Schlüssel für jede Anfrage überprüft, die der API-Proxy von einer Clientanwendung empfängt. Nach der Bestätigung wird der API-Schlüssel aus der ausgehenden Anfrage entfernt.
Hängen Sie die Richtlinien an den ProxyEndpoint des zu schützenden API-Proxys an:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
Nachdem Sie die Richtlinie angehängt haben, stellen Sie den API-Proxy bereit.
Anfrage mit einem gültigen API-Schlüssel senden
Als Administrator in Ihrer Organisation können Sie den API-Schlüssel einer beliebigen App so abrufen:
curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -H "Authorization: Bearer $TOKEN"
Dabei ist $TOKEN
auf Ihr OAuth 2.0-Zugriffstoken festgelegt. Weitere Informationen hierzu finden Sie unter OAuth 2.0-Zugriffstoken abrufen. Informationen zu den in diesem Beispiel verwendeten curl
-Optionen finden Sie unter curl verwenden. Eine Beschreibung der verwendeten Umgebungsvariablen finden Sie unter Umgebungsvariablen für Apigee API-Anfragen festlegen.
Das für diesen Aufruf zurückgegebene App-Profil enthält den Consumer-Key (API-Schlüssel) und das Secret. Der Consumer-Key-Wert ist der Wert, den Sie in Ihrer Anfrage an die geschützte API für den API-Schlüssel nutzen.
Beispiel: Eine Anfrage, die keinen API-Schlüssel enthält, führt zu einem Autorisierungsfehler.
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282
Die Fehlermeldung weist darauf hin, dass die Richtlinie nach einem API-Schlüssel gesucht, aber keinen gültigen Schlüssel gefunden hat:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
Wenn der Consumer-Key für die Anwendung als Abfrageparameter enthalten ist, ist das erwartete Ergebnis die erfolgreiche Autorisierung:
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
Als Ergebnis wird eine Antwort des Wetterdienstes erwartet.
Das Ändern des Werts des API-Schlüssels in der Anfrage führt zu einem Autorisierungsfehler:
curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
Ergebnisse in:
OAuth Failure : Consumer Key is Invalid