Validierung von API-Schlüsseln einrichten

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

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 erforderliche Einstellung für eine Richtlinie zum Überprüfen von API-Schlüsseln ist die erwartete Position 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 findet sich unter API-Schlüsselrichtlinie prüfen.

API-Proxys leiten automatisch alle HTTP-Header und Abfrageparameter durch, die in der Anfrage vorhanden sind. Daher empfiehlt es sich, den API-Schlüssel nach der Verifizierung aus der Nachricht zu entfernen, damit er nicht per Kabel an den Back-End-Dienst gesendet 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 den PreFlow der Anfrage 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://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

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://{org_name}-test.apigee.net/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://{org_name}-test.apigee.net/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://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Ergebnisse in:

OAuth Failure : Consumer Key is Invalid

Beachten Sie, dass Sie als Administrator für Ihre Organisation den Consumer-Key für jede in einer Organisation registrierte Anwendung abrufen können:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password