Die Kladde schützt ihre API selbst: Anmeldung mit Entra ID (Lektion 2.6.2), Rechte je Endpunkt (2.6.3), eine Ratenbegrenzung für die Buchung (2.6.6). Für eine API mit vielen fremden Aufrufern kommt eine Schicht davor dazu, ein API-Gateway. Es nimmt alle Anfragen an, prüft und begrenzt sie, und erst was durchkommt, erreicht die Kladde. In Azure ist das Azure API Management (APIM). Diese Lektion ist eine Übung: Sie stellen die Kontakte-API einmal hinter API Management, sehen, was das Gateway kann, und bauen es danach wieder ab. Die Kladde selbst braucht es heute nicht.
Was ein Gateway übernimmt
API Management besteht aus drei Teilen:
- Das Gateway nimmt die Anfragen an. Es hat eine eigene Adresse, etwa
https://kladde-apim.azure-api.net/kladde/api/contacts, und leitet an die eigentliche API weiter, das Backend, hier die Kladde in Container Apps aus Lektion 2.9.5. - Die Verwaltung im Azure-Portal und über die Azure CLI: APIs, Produkte, Abonnements, Richtlinien.
- Das Entwicklerportal: eine Website, auf der Aufrufer die APIs lesen, sich registrieren und ihre Schlüssel holen. Es entsteht aus den importierten OpenAPI-Dokumenten.
Dazu kommen die Begriffe, mit denen API Management Aufrufer verwaltet:
- Ein Produkt bündelt eine oder mehrere APIs, etwa „Kladde für Partner“. Aufrufer abonnieren Produkte, nicht einzelne APIs.
- Ein Abonnement gibt einem Aufrufer einen Abonnementschlüssel, den er im Header
Ocp-Apim-Subscription-Keymitschickt. Der Schlüssel sagt, wer ruft, nicht, ob er es darf; für Rechte bleibt die Anmeldung. - Richtlinien (policies) sind kleine XML-Programme, die das Gateway bei jeder Anfrage und Antwort ausführt: Token prüfen, begrenzen, Header setzen oder entfernen, Antworten zwischenspeichern.
Was davon tut die Kladde schon selbst? Anmeldung und Ratenbegrenzung. Das Gateway ersetzt das nicht, es kommt davor: Die Kladde prüft weiter jedes Token und jedes Recht, denn wer das Gateway umgeht und die Container App direkt anspricht, darf nichts gewinnen. Was das Gateway zusätzlich bringt, sind Abonnements je Aufrufer, Grenzen je Abonnement, ein Portal für Fremde und ein Ort, an dem viele APIs gleich behandelt werden.