Erstellen von Abonnements in Azure API Management (APIM)
Wenn Sie eine API mit API Management veröffentlichen, legen Sie selbst fest, wer über das Gateway auf die API zugreifen kann.
Für Ihre meteorologische App möchten Sie sicherstellen, dass nur Kunden, die Ihren Dienst abonniert haben, auf die API zugreifen und Ihre Prognosedaten verwenden können. Sie erreichen diese Zugriffssteuerung durch das Ausstellen von Abonnementschlüsseln.
Wichtig
In diesem Kontext haben Abonnements nichts mit Azure-Abonnements zu tun, die zum Verwalten Ihres Azure-Kontos verwendet werden.
In dieser Lerneinheit erfahren Sie, wie Sie Ihre APIs mit Abonnementschlüssel schützen.
Abonnements und Schlüssel
Sie können Ihre APIs und die darin enthaltenen Informationen frei verfügbar machen. In der Regel soll der Zugriff darauf jedoch auf zahlende Benutzer oder auf Organisationen, mit denen Sie eine Arbeitsbeziehung pflegen, beschränkt werden. Eine Möglichkeit besteht darin, den Zugriff auf Ihre APIs mithilfe von Abonnements zu verwalten. Mit Abonnements wird der Benutzerzugriff auf eine API segmentiert.
Abonnementschlüssel autorisieren dabei den Zugriff auf diese Abonnements. Wenn ein Client eine Anforderung an eine geschützte API sendet, muss ein gültiger Abonnementschlüssel in die HTTP-Anforderung eingeschlossen werden. andernfalls wird der Anruf abgelehnt.
Ein Abonnementschlüssel ist ein eindeutiger automatisch generierter Schlüssel, der als Teil eines API-Aufrufs ü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 alle ihre 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. Wenn Ihre Partner*innen und Zuliefer*innen also über unterschiedliche Zugriffsrechte auf Ihre WeatherData-API (Wetterdaten-API) verfügen sollen, weisen Sie die API einem Produkt zu, und verwenden Sie dann das Azure-Portal, um APIs einem Produkt zuzuordnen. |
Anwendungen, die eine geschützte API aufrufen, müssen in jeder Anforderung einen Abonnementschlüssel enthalten.
Sie können diese Abonnementschlüssel jederzeit erneut generieren. Wenn Sie beispielsweise vermuten, das ein Schlüssel mit nicht autorisierten Benutzer*innen geteilt wurde, können Sie einen neuen erstellen.
Jedes Abonnement verfügt über zwei Schlüssel: einen Primärschlüssel 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. Wenn Sie die Anforderung genehmigen, müssen Sie sie sicher den Abonnementschlüssel senden. 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 einen gültigen Schlüssel in allen HTTP-Anforderungen einschließen, die API-Endpunkte aufrufen, die durch ein Abonnement geschützt sind. Schlüssel können im Anforderungsheader oder als Abfragezeichenfolgenparameter in der URL übergeben werden.
Der Standardname des Abonnementschlüsselheaders ist Ocp-Apim-Subscription-Key, und der Standardname der Abfragezeichenfolge ist subscription-key.
Um Ihre API-Aufrufe zu testen, können Sie eine Testkonsole im Azure-Portal oder das Entwicklerportal oder Befehlszeilentools wie curl verwenden. Im folgenden Beispiel sehen Sie eine GET
-Anforderung über das Entwicklerportal mit dem Header des Abonnementschlüssels:
Hier ist ein Beispiel dafür, wie Sie einen Schlüssel in einem Anforderungsheader mithilfe von curl übergeben:
curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path
Hier ist ein Beispiel dafür, wie Sie einen Curl-Befehl verwenden, um einen Schlüssel als Abfragezeichenfolge in einer URL zu übergeben:
curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>
Wenn der erforderliche Schlüssel nicht im Header oder als Abfragezeichenfolge in der URL übergeben wird, erhalten Sie vom API-Gateway die Antwort 401 Zugriff verweigert.