Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het vorige deel: Verificatievereisten
In het voorbeeldscenario gebruikt de hoofdtoepassing een API van derden die is beveiligd met een toegangssleutel. In deze sectie wordt de API gedemonstreerd met behulp van Azure Functions, maar dezelfde principes zijn van toepassing, ongeacht hoe of waar de API wordt geïmplementeerd, ongeacht of u de toepassing host op een andere cloudprovider of een traditionele webserver.
Het belangrijkste aspect is dat clientaanvragen naar het beveiligde eindpunt de toegangssleutel moeten bevatten, die de app veilig moet beheren. In deze sectie vindt u een overzicht van het implementeren van een dergelijke API met behulp van Azure Functions, maar u kunt de principes aanpassen aan uw specifieke behoeften.
Voorbeeld van API-implementatie van derden
De voorbeeld-API van derden is een eenvoudig eindpunt dat een willekeurig getal tussen 1 en 999 retourneert. De API wordt beveiligd met een toegangssleutel, die u in de aanvraag moet opgeven om toegang te krijgen tot het eindpunt. Voor demonstratiedoeleinden wordt deze API geïmplementeerd op het eindpunt https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Als u de API wilt aanroepen, moet u echter de toegangssleutel d0c5atM1cr0s0ft opgeven in een ?code= URL-parameter of in een 'x-functions-key' eigenschap van de HTTP-header. Nadat u bijvoorbeeld de app en API hebt geïmplementeerd, probeert u deze URL in een browser of curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.
Als de toegangssleutel geldig is, retourneert het eindpunt een JSON-antwoord met één eigenschap, 'waarde', waarvan de waarde een getal is tussen 1 en 999, zoals {"value": 959}.
Het eindpunt wordt geïmplementeerd in Python en geïmplementeerd in Azure Functions. De code is als volgt:
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))
In de voorbeeldopslagplaats vindt u deze code onder third_party_api/RandomNumber/__init__.py. De map RandomNumber bevat de naam van de functie en __init__.py de code bevat. Een ander bestand in de map ,function.json, beschrijft wanneer de functie wordt geactiveerd. Andere bestanden in de bovenliggende map third_party_api bevatten details voor de Azure Function-applicatie die als host fungeert voor de functie zelf.
Als u de code wilt implementeren, voert het inrichtingsscript van het voorbeeld de volgende stappen uit:
Maak een back-upopslagaccount voor Azure Functions met de Azure CLI-opdracht
az storage account createvoor het beheren van status- en interne bewerkingen.Maak een Azure Functions-app met de Azure CLI-opdracht.
az function app createNadat u 60 seconden hebt gewacht totdat de host volledig is ingericht, implementeert u de code met behulp van de opdracht Azure Functions Core Tools.
func azure functionapp publishWijs de toegangssleutel toe
d0c5atM1cr0s0ftaan de functie. (Zie Azure Functions beveiligen voor een achtergrond op functiesleutels.)In het inrichtingsscript wordt deze stap uitgevoerd met behulp van de azure CLI-opdracht az functionapp function keys set .
Opmerkingen worden opgenomen om te laten zien hoe u deze stap kunt uitvoeren door een REST API-aanroep naar de Functions Key Management-API , indien gewenst. Als u deze REST API wilt aanroepen, moet u eerst een andere REST API-aanroep uitvoeren om de hoofdsleutel van de functie-app op te halen.
U kunt ook toegangssleutels toewijzen via Azure Portal. Selecteer Functions op de pagina voor de Functions-app en selecteer vervolgens de specifieke functie die u wilt beveiligen (die in dit voorbeeld wordt genoemd RandomNumber ). Selecteer op de pagina van de functie functietoetsen om de pagina te openen waar u deze sleutels kunt maken en beheren.