Delen via


Zelfstudie: Een beheerde identiteit gebruiken om Azure Functions aan te roepen vanuit een Azure Spring Apps-app

Notitie

De Basic-, Standard- en Enterprise-abonnementen hebben op 17 maart 2025 een pensioenperiode ingevoerd. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.

Dit artikel is van toepassing op:✅ Basic/Standard ✅ Enterprise

In dit artikel leest u hoe u een beheerde identiteit maakt voor een app die wordt gehost in Azure Spring Apps en hoe u deze gebruikt om door HTTP geactiveerde functies aan te roepen.

Zowel Azure Functions als App Services hebben ingebouwde ondersteuning voor Microsoft Entra-verificatie. Door deze ingebouwde verificatiemogelijkheid te gebruiken, samen met Beheerde identiteiten voor Azure Spring Apps, kunt u RESTful-services aanroepen met behulp van moderne OAuth-semantiek. Deze methode vereist geen opslag van geheimen in code en biedt u meer gedetailleerde besturingselementen voor het beheren van de toegang tot externe bronnen.

Vereisten

Een brongroep maken

Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Gebruik de volgende opdracht om een resourcegroep te maken die een functie-app bevat:

az group create --name <resource-group-name> --location <location>

Zie de opdracht az group create voor meer informatie.

Een functie-app maken

Als u een functie-app wilt maken, moet u eerst een back-upopslagaccount maken. U kunt de opdracht az storage account create gebruiken.

Belangrijk

Elke functie-app en elk opslagaccount moeten een unieke naam hebben.

Gebruik de volgende opdracht om het opslagaccount te maken. Vervang <function-app-name> door de naam van uw functie-app en <storage-account-name> door de naam van uw opslagaccount.

az storage account create \
    --resource-group <resource-group-name> \
    --name <storage-account-name> \
    --location <location> \
    --sku Standard_LRS

Nadat het opslagaccount is gemaakt, gebruikt u de volgende opdracht om de functie-app te maken:

az functionapp create \
    --resource-group <resource-group-name> \
    --name <function-app-name> \
    --consumption-plan-location <location> \
    --os-type windows \
    --runtime node \
    --storage-account <storage-account-name> \
    --functions-version 4

Noteer de geretourneerde hostNames waarde, die de notatie heeft https://<your-functionapp-name>.azurewebsites.net. Gebruik deze waarde in de hoofd-URL van de functie-app om de functie-app te testen.

Microsoft Entra-verificatie inschakelen

Gebruik de volgende stappen om Microsoft Entra-verificatie in te schakelen voor toegang tot uw functie-app.

  1. Navigeer in Azure Portal naar uw resourcegroep en open vervolgens de functie-app die u hebt gemaakt.
  2. Selecteer Verificatie in het navigatiedeelvenster en selecteer vervolgens Id-provider toevoegen in het hoofdvenster.
  3. Selecteer Op de pagina Een id-provider toevoegen Microsoft in de vervolgkeuzelijst Id-provider.
  4. Selecteer Toevoegen.
  5. Voor de basisinstellingen op de pagina Een id-provider toevoegen stelt u Ondersteunde accounttypen in op Elke Microsoft Entra-map - Meerdere tenants.
  6. Niet-geverifieerde aanvragen instellen op HTTP 401 Niet geautoriseerd: aanbevolen voor API's. Deze instelling zorgt ervoor dat alle niet-geverifieerde aanvragen worden geweigerd (401-antwoord).
  7. Selecteer Toevoegen.

Nadat u de instellingen hebt toegevoegd, wordt de functie-app opnieuw opgestart en worden alle volgende aanvragen gevraagd zich aan te melden via Microsoft Entra-id. U kunt testen of niet-geverifieerde aanvragen momenteel worden geweigerd met de hoofd-URL van de functie-app (geretourneerd in de hostNames uitvoer van de az functionapp create opdracht). Vervolgens wordt u omgeleid naar het Microsoft Entra-aanmeldingsscherm van uw organisatie.

U hebt de toepassings-id en de URI voor de toepassings-id nodig voor later gebruik. Navigeer in Azure Portal naar de functie-app die u hebt gemaakt.

Als u de toepassings-id wilt ophalen, selecteert u Verificatie in het navigatiedeelvenster en kopieert u vervolgens de app-id-waarde (client) voor de id-provider die de naam van de functie-app bevat.

Schermopname van Azure Portal met de pagina Verificatie voor een functie-app, met de naam van de functie-app gemarkeerd in de id-provider.

Als u de URI voor de toepassings-id wilt ophalen, selecteert u Een API beschikbaar maken in het navigatiedeelvenster en kopieert u de waarde van de URI van de toepassings-id.

Schermopname van Azure Portal met de pagina Een API beschikbaar maken voor een functie-app met de URI voor de toepassings-id gemarkeerd.

Een door HTTP geactiveerde functie maken

Gebruik in een lege lokale map de volgende opdrachten om een nieuwe functie-app te maken en een door HTTP geactiveerde functie toe te voegen:

func init --worker-runtime node
func new --template HttpTrigger --name HttpTrigger

Standaard gebruiken functies verificatie op basis van sleutels om HTTP-eindpunten te beveiligen. Als u Microsoft Entra-verificatie wilt inschakelen om de toegang tot de functies te beveiligen, stelt u de authLevel sleutel anonymous in op het function.json-bestand , zoals wordt weergegeven in het volgende voorbeeld:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      ...
    }
  ]
}

Zie de sectie Beveiligde HTTP-eindpunten van Azure Functions beveiligen voor meer informatie.

Gebruik de volgende opdracht om de app te publiceren naar het exemplaar dat in de vorige stap is gemaakt:

func azure functionapp publish <function-app-name>

In de uitvoer van de publicatieopdracht moet de URL naar de zojuist gemaakte functie worden weergegeven, zoals wordt weergegeven in de volgende uitvoer:

Deployment completed successfully.
Syncing triggers...
Functions in <your-functionapp-name>:
    HttpTrigger - [httpTrigger]
        Invoke url: https://<function-app-name>.azurewebsites.net/api/httptrigger

Een Azure Spring Apps-service-exemplaar en -toepassing maken

Gebruik de volgende opdrachten om de spring-extensie toe te voegen en een nieuw exemplaar van Azure Spring Apps te maken:

az extension add --upgrade --name spring
az spring create \
    --resource-group <resource-group-name> \
    --name <Azure-Spring-Apps-instance-name> \
    --location <location>

Gebruik de volgende opdracht om een toepassing met de naam msiapp te maken met een door het systeem toegewezen beheerde identiteit, zoals aangevraagd door de --assign-identity parameter:

az spring app create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name "msiapp" \
    --assign-endpoint true \
    --assign-identity

Een Spring Boot-voorbeeld-app bouwen om de functie aan te roepen

In dit voorbeeld wordt de door HTTP geactiveerde functie aangeroepen door eerst een toegangstoken aan te vragen vanaf het MSI-eindpunt en dat token te gebruiken om de HTTP-aanvraag van de functie te verifiëren. Zie de sectie Een token ophalen met behulp van HTTP van beheerde identiteiten voor Azure-resources op een Azure-VM voor meer informatie om een toegangstoken te verkrijgen.

  1. Gebruik de volgende opdracht om het voorbeeldproject te klonen:

    git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
    
  2. Gebruik de volgende opdracht om uw functie-URI en de triggernaam in uw app-eigenschappen op te geven:

    cd azure-spring-apps-samples/managed-identity-function
    vim src/main/resources/application.properties
    
  3. Als u beheerde identiteit voor Azure Spring Apps-apps wilt gebruiken, voegt u de volgende eigenschappen met deze waarden toe aan src/main/resources/application.properties:

    azure.function.uri=https://<function-app-name>.azurewebsites.net
    azure.function.triggerPath=httptrigger
    azure.function.application-id.uri=<function-app-application-ID-uri>
    
  4. Gebruik de volgende opdracht om uw voorbeeld-app te verpakken:

    mvn clean package
    
  5. Gebruik de volgende opdracht om de app te implementeren in Azure Spring Apps:

    az spring app deploy \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name "msiapp" \
        --artifact-path target/asc-managed-identity-function-sample-0.1.0.jar
    
  6. Gebruik de volgende opdracht om toegang te krijgen tot het openbare eindpunt of testeindpunt om uw app te testen:

    curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
    

    Het volgende bericht wordt geretourneerd in de hoofdtekst van het antwoord.

    Function Response: Hello, springcloud. This HTTP triggered function executed successfully.
    

Volgende stappen