Teil 3: Beispiel für api-Implementierung von Drittanbietern

Vorheriger Teil: Authentifizierungsanforderungen

Im Beispielszenario verwendet die Hauptanwendung eine Drittanbieter-API, die mit einem Zugriffsschlüssel gesichert ist. In diesem Abschnitt wird die API mit Azure Functions veranschaulicht, die gleichen Prinzipien gelten jedoch unabhängig davon, wie oder wo die API implementiert wird – unabhängig davon, ob Sie die Anwendung auf einem anderen Cloudanbieter oder einem herkömmlichen Webserver hosten.

Der wichtigste Aspekt ist, dass alle Clientanforderungen an den geschützten Endpunkt den Zugriffsschlüssel enthalten müssen, den die App sicher verwalten muss. Dieser Abschnitt enthält eine Übersicht darüber, wie Sie eine solche API mit Azure Functions implementieren, aber Sie können die Prinzipien an Ihre spezifischen Anforderungen anpassen.

Beispiel für api-Implementierung von Drittanbietern

Die Beispiel-Drittanbieter-API ist ein einfacher Endpunkt, der eine Zufallszahl zwischen 1 und 999 zurückgibt. Die API ist mit einem Zugriffsschlüssel gesichert, den Sie in der Anforderung für den Zugriff auf den Endpunkt bereitstellen müssen. Zu Demonstrationszwecken wird diese API für den Endpunkt https://msdocs-example-api.azurewebsites.net/api/RandomNumberbereitgestellt. Um die API aufzurufen, müssen Sie jedoch den Zugriffsschlüssel d0c5atM1cr0s0ft entweder in einem ?code= URL-Parameter oder in einer 'x-functions-key' Eigenschaft des HTTP-Headers bereitstellen. Versuchen Sie beispielsweise nach der Bereitstellung der App und der API diese URL über einen Browser oder curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Wenn der Zugriffsschlüssel gültig ist, gibt der Endpunkt eine JSON-Antwort zurück, die eine einzelne Eigenschaft "Wert" enthält, deren Wert eine Zahl zwischen 1 und 999 ist, z. B. {"value": 959}.

Der Endpunkt wird in Python implementiert und in Azure Functions bereitgestellt. Der Code lautet wie folgt:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

Im Beispiel-Repository befindet sich dieser Code unter third_party_api/RandomNumber/__init__.py. Der Ordner RandomNumber stellt den Namen der Funktion bereit, und __init__.py enthält den Code. Eine andere Datei im Ordner ,function.json, beschreibt, wann die Funktion ausgelöst wird. Andere Dateien im übergeordneten Ordner third_party_api enthalten Details zur Azure-Funktions-App, die die Funktion hostet.

Zum Bereitstellen des Codes führt das Bereitstellungsskript des Beispiels die folgenden Schritte aus:

  1. Erstellen Sie ein Sicherungsspeicherkonto für Azure-Funktionen mit dem Azure CLI-Befehl zum az storage account create Verwalten von Zustands- und internen Vorgängen.

  2. Erstellen Sie eine Azure Functions-App mit dem Befehl Azure CLI, az function app create.

  3. Nachdem Sie 60 Sekunden warten, bis der Host vollständig bereitgestellt wird, stellen Sie den Code mithilfe des Befehls Azure Functions Core Tools bereit. func azure functionapp publish

  4. Weisen Sie der Funktion die Zugriffstaste d0c5atM1cr0s0ftzu. (Siehe Sicherheit von Azure-Funktionen für Hintergrundinformationen zu Funktionsschlüsseln.)

    Im Bereitstellungsskript wird dieser Schritt mit dem Azure CLI-Befehl az functionapp function keys set ausgeführt.

    Kommentare werden eingeschlossen, um zu zeigen, wie Sie diesen Schritt durch einen REST-API-Aufruf der Functions Key Management API ausführen, falls gewünscht. Um diese REST-API aufzurufen, muss zuerst ein weiterer REST-API-Aufruf ausgeführt werden, um den Hauptschlüssel der Funktions-App abzurufen.

Sie können auch Zugriffstasten über das Azure-Portal zuweisen. Wählen Sie auf der Seite der App "Funktionen" die Option Funktionen aus, und wählen Sie dann die spezifische Funktion aus, die gesichert werden soll (die in diesem Beispiel RandomNumber genannt wird). Wählen Sie auf der Seite der Funktion Die Funktionstasten aus, um die Seite zu öffnen, auf der Sie diese Schlüssel erstellen und verwalten können.