Schützen von APIs mithilfe von Abonnements
Wenn Sie APIs mit API Management veröffentlichen, ist es einfach und üblich, auf diese APIs mithilfe von Abonnementschlüsseln sicher zuzugreifen. Entwickler, die die veröffentlichten APIs nutzen möchten, müssen einen gültigen Abonnementschlüssel in HTTP-Anforderungen einschließen, wenn sie Aufrufe an diese APIs senden. Das API Management-Gateway lehnt Aufrufe ohne Abonnementschlüssel ab, und die Aufrufe werden nicht an die Back-End-Dienste weitergeleitet.
Um einen Abonnementschlüssel für den API-Zugriff zu erhalten, ist ein Abonnement erforderlich. Ein Abonnement ist im Wesentlichen ein benannter Container für ein Paar von Abonnementschlüsseln. Entwickler, die die veröffentlichten APIs verarbeiten müssen, können Abonnements erhalten. Sie benötigen keine Genehmigung durch API-Herausgeber. API-Herausgeber können Abonnements für API-Nutzer auch direkt erstellen.
Hinweis
API Management unterstützt auch andere Mechanismen zum Schützen des Zugriffs auf APIs, einschließlich OAuth 2.0, Clientzertifikaten und IP-Zulassungslisten.
Abonnements und Schlüssel
Ein Abonnementschlüssel ist ein eindeutiger, automatisch generierter Schlüssel, der im Header der Clientanforderung oder als Parameter der Abfragezeichenfolge übergeben werden kann. Der Schlüssel bezieht sich direkt auf ein Abonnement, das verschiedene Bereiche umfassen kann. Mit Abonnements können Sie Berechtigungen und Richtlinien präzise verwalten.
Die folgenden drei Hauptbereiche stehen für Abonnements zur Verfügung:
Bereich | Informationen |
---|---|
Alle APIs | Gilt für jede API, auf die über das Gateway zugegriffen werden kann. |
Einzelne API | Gilt für eine einzelne importierte API und die Gesamtheit ihrer Endpunkte. |
Produkt | Ein Produkt ist eine Sammlung von einer oder mehreren APIs, die in API Management konfiguriert werden. Sie können APIs mehr als einem Produkt zuweisen. Produkte können unterschiedliche Zugriffsregeln, Verbrauchskontingente und Nutzungsbedingungen besitzen. |
Für Anwendungen, die eine geschützte API aufrufen, muss der Schlüssel in jeder Anforderung enthalten sein.
Sie können Abonnementschlüssel jederzeit erneut generieren, wenn Sie z. B. vermuten, dass ein Schlüssel für nicht autorisierte Benutzer freigegeben wurde.
Jedes Abonnement verfügt über zwei Schlüssel: einen Primär- und einen Sekundärschlüssel. Die Verwendung von zwei Schlüsseln vereinfacht das erneute Generieren eines Schlüssels. Wenn Sie beispielsweise den Primärschlüssel ändern und Ausfallzeiten vermeiden möchten, verwenden Sie in Ihren Apps den Sekundärschlüssel.
Für Produkte mit aktivierten Abonnements müssen Clients einen Schlüssel angeben, wenn sie APIs in diesem Produkt aufrufen. Entwickler können durch Übermitteln einer Abonnementanforderung einen Schlüssel abrufen. Bei genehmigten Anforderungen muss der Abonnementschlüssel auf sicherem Weg gesendet werden, z. B. in einer verschlüsselten Nachricht. Dieser Schritt ist zentraler Bestandteil des API Management-Workflows.
Aufrufen einer API mit dem Abonnementschlüssel
Anwendungen müssen für alle HTTP-Anforderungen einen gültigen Schlüssel bereitstellen, wenn API-Endpunkte aufgerufen werden, die durch ein Abonnement geschützt sind. Schlüssel können über den Anforderungsheader oder als Abfragezeichenfolge in der URL übergeben werden.
Der Standardname für den Header lautet Ocp-Apim-Subscription-Key. Die Standardabfragezeichenfolge ist subscription-key.
Sie können Ihre API-Aufrufe über das Entwicklerportal oder mit Befehlszeilentools, wie z. B. curl, testen. Im folgenden Beispiel sehen Sie eine GET
-Anforderung über das Entwicklerportal mit dem Header des Abonnementschlüssels:
Hier wird gezeigt, wie Sie mit curl einen Schlüssel im Anforderungsheader übergeben:
curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path
Mit dem folgenden curl-Beispielbefehl wird ein Schlüssel in der URL als Abfragezeichenfolge übergeben:
curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>
Wenn der Schlüssel nicht im Header oder als Abfragezeichenfolge in der URL übergeben wird, erhalten Sie vom API-Gateway die Antwort 401 Zugriff verweigert.