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.
Deze quickstart laat zien hoe je een Durable Functions-app kunt configureren om identiteitsgebaseerde verbindingen te gebruiken voor zowel de Durable Task Scheduler-backend als de Azure Storage-provider. Het Azure-platform beheert een beheerde identiteit vanuit Microsoft Entra ID - je hoeft geen geheimen te provisioneren of te roteren.
Dit pad gaat ervan uit dat je app al is geconfigureerd om de Durable Task Scheduler-backend te gebruiken. Als je app nog steeds gebruikmaakt van de Azure Storage-provider, kies dan het Azure Storage-pad in dit artikel.
In dit artikel:
- Lokale ontwikkelomgeving — Gebruik Azurite of uw ontwikkelaarsgegevens voor lokaal testen
- Identity-verbindingen voor apps die zijn geïmplementeerd in Azure — Een beheerde identiteit inschakelen en uw functie-app configureren
Note
Beheerde identiteit wordt ondersteund in Durable Functions extension versies 2.7.0 en hoger.
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Prerequisites
U hebt het volgende nodig om deze quickstart te voltooien:
- Een bestaand Durable Functions project dat is gemaakt in de Azure-portal of een lokaal Durable Functions project dat is geïmplementeerd in Azure.
- Bekendheid met het uitvoeren van een Durable Functions-app in Azure.
Als u geen bestaand Durable Functions project hebt geïmplementeerd in Azure, raden we u aan om te beginnen met een van de volgende quickstarts:
- Uw eerste duurzame functie maken - C#
- Uw eerste duurzame functie maken - JavaScript
- Uw eerste duurzame functie maken - Python
- Uw eerste duurzame functie maken - PowerShell
- Uw eerste duurzame functie maken - Java
Instelling van lokale ontwikkeling
U hebt twee opties voor lokale ontwikkeling. Gebruik de lokale Durable Task Scheduler-emulator voor snel testen zonder Azure-inloggegevens. Als je identiteitsgebaseerde verbindingen moet testen met een live plannerresource, gebruik dan je ontwikkelaarsinloggegevens.
Optie 1: Gebruik de lokale emulator van de Duurzame Taakplanner
Gebruik bij lokaal ontwikkelen de Durable Task Scheduler-emulator zodat je je app kunt testen zonder Azure-inloggegevens. Stel je app-instellingen zo in dat ze naar de emulator wijzen en gebruik de standaard taakhub.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"DTS_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None",
"TASKHUB_NAME": "default"
}
}
Optie 2: Op identiteit gebaseerde verbindingen voor lokale ontwikkeling
Strikt genomen is een beheerde identiteit alleen beschikbaar voor apps wanneer ze worden uitgevoerd in Azure. Je kunt echter nog steeds een lokaal draaiende app configureren om identiteitsgebaseerde verbindingen te gebruiken door je ontwikkelaarsgegevens te gebruiken om te authenticeren tegen je plannerresource. Vervolgens gebruikt de app bij de implementatie op Azure de beheerde identiteitsconfiguratie.
Wanneer je ontwikkelaarsgegevens gebruikt, probeert de verbinding een token te krijgen van de volgende locaties, in deze volgorde:
- Een lokale cache die wordt gedeeld tussen Microsoft-toepassingen
- De huidige gebruikerscontext in Visual Studio
- De huidige gebruikerscontext in Visual Studio Code
- De huidige gebruikerscontext in de Azure CLI
Als geen van deze opties is geslaagd, krijgt u een foutmelding die aangeeft dat de app geen verificatietoken kan ophalen. Controleer of je bent ingelogd bij een van de genoemde tools met een account dat toegang heeft tot je plannerresource.
Runtime configureren voor het gebruik van een lokale ontwikkelaarsidentiteit
Stel in je lokale instellingen het scheduler-endpoint in en gebruik
Authentication=DefaultAzurehet zo dat de app je ontwikkelaarsgegevens gebruikt.{ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "AzureWebJobsStorage": "UseDevelopmentStorage=true", "DTS_CONNECTION_STRING": "Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=DefaultAzure", "TASKHUB_NAME": "<your-task-hub>" } }Geef je ontwikkelaar de
Durable Task Data Contributorrol op de scheduler-resource of op de specifieke taskhub-scope.
Op identiteit gebaseerde verbindingen voor app die is geïmplementeerd in Azure
Een beheerde identiteitsresource inschakelen
Schakel een beheerde identiteit in voor je functie-app. Uw functie-app moet een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit hebben. Als u een beheerde identiteit voor uw functie-app wilt inschakelen en meer wilt weten over de verschillen tussen de twee typen identiteiten, raadpleegt u het overzicht van de beheerde identiteit.
Toegangsrollen toewijzen aan de beheerde identiteit
Navigeer naar je scheduler-resource in het Azure-portaal en wijs de Durable Task Data Contributor rol toe aan je beheerde identiteit. Voor toegang met minimale bevoegdheden wijs je de rol toe binnen het bereik van de takenhub in plaats van aan de hele scheduler. Als je een door de gebruiker toegewezen identiteit gebruikt, selecteer dan Beheerde identiteit en selecteer dan + Selecteer leden.
De configuratie van de beheerde identiteit toevoegen aan uw app
Voordat u de beheerde identiteit van uw app kunt gebruiken, moet u enkele wijzigingen aanbrengen in de app-instellingen:
Selecteer in de Azure-portal in het resourcemenu van de functie-app onder SettingsOmgevingsvariabelen.
Voeg de instelling
DTS_CONNECTION_STRINGtoe of werk deze bij, zodat de app verbinding maakt met uw scheduler met behulp van de beheerde identiteit van de app.Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentityAls je een door de gebruiker toegewezen beheerde identiteit gebruikt, neem dan de client-ID op in de verbindingsreeks:
Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>Voeg de instelling
TASKHUB_NAMEtoe of werk deze bij naar dezelfde taakhubnaam.Als je Function-host Azure Storage nodig heeft voor host-level operaties, configureer
AzureWebJobsStoragedan apart. De scheduler-backend gebruikt de DTS-verbindingsreeks in plaats vanAzureWebJobsStoragevoor duurzame status.
Uw configuratie controleren
Ga als volgt te werk om te controleren of de configuratie van uw beheerde identiteit werkt:
- Navigeer in het Azure-portaal naar je Function-app en activeer je Durable Functions-orkestrering.
- Controleer of de orkestratie succesvol wordt afgerond door het status-eindpunt te controleren of het tabblad Monitor te controleren.
- Als u authenticatiefouten ziet, controleert u of:
- De beheerde identiteit heeft de rol
Durable Task Data Contributorvoor het plannerresource- of taakhubbereik. - De
DTS_CONNECTION_STRINGinstellingen enTASKHUB_NAMEzijn correct. - De app gebruikt de verwachte identiteit wanneer deze draait in Azure.
- De beheerde identiteit heeft de rol
Instelling van lokale ontwikkeling
U hebt twee opties voor lokale ontwikkeling. Gebruik Azurite voor snelle lokale tests zonder Azure referenties. Als u op identiteit gebaseerde verbindingen wilt testen op basis van een echt Azure Storage-account, gebruikt u in plaats daarvan uw referenties voor ontwikkelaars.
Optie 1: de Azure Storage emulator gebruiken
Wanneer u lokaal ontwikkelt, is het raadzaam om Azurite te gebruiken. Dit is Azure Storage lokale emulator. Configureer uw app voor de emulator door op te "AzureWebJobsStorage": "UseDevelopmentStorage=true" geven in de local.settings.json.
Optie 2: Op identiteit gebaseerde verbindingen voor lokale ontwikkeling
Strikt genomen is een beheerde identiteit alleen beschikbaar voor apps wanneer deze worden uitgevoerd op Azure. U kunt echter nog steeds een lokaal draaiende app configureren voor het gebruik van een op identiteit gebaseerde verbinding met behulp van uw ontwikkelaarsreferenties om te verifiëren bij Azure resources. Wanneer de app vervolgens wordt geïmplementeerd op Azure, wordt in plaats daarvan de configuratie van uw beheerde identiteit gebruikt.
Wanneer u referenties voor ontwikkelaars gebruikt, probeert de verbinding in deze volgorde een token op te halen van de volgende locaties:
- Een lokale cache die wordt gedeeld tussen Microsoft-toepassingen
- De huidige gebruikerscontext in Visual Studio
- De huidige gebruikerscontext in Visual Studio Code
- De huidige gebruikerscontext in de Azure CLI
Als geen van deze opties is geslaagd, krijgt u een foutmelding die aangeeft dat de app geen verificatietoken kan ophalen. Controleer of u bent aangemeld bij een van de vermelde hulpprogramma's met een account dat toegang heeft tot uw Azure Storage-account.
Runtime configureren voor het gebruik van een lokale ontwikkelaarsidentiteit
Geef de naam van uw Azure Storage-account op in local.settings.json, bijvoorbeeld:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Navigeer in de Azure-portal naar uw Azure-opslagaccountresource.
Selecteer het tabblad Access Control (IAM) en selecteer vervolgens Roltoewijzing toevoegen.
Wijs elk van de volgende rollen aan uzelf toe. Selecteer voor elke rol '+ Leden selecteren' en zoek naar de e-mail die u gebruikt om u aan te melden bij Visual Studio, Visual Studio Code of de Azure CLI.
- Inzender voor opslagwachtrijgegevens
- Inzender voor Storage Blob-gegevens
- Inzender van opslagtabelgegevens
Note
Dit zijn dezelfde drie rollen die vereist zijn voor uw beheerde identiteit bij de implementatie in Azure. Zie Toegangsrollen toewijzen aan de beheerde identiteit.
Op identiteit gebaseerde verbindingen voor app die is geïmplementeerd in Azure
Een beheerde identiteitsresource inschakelen
Schakel eerst een beheerde identiteit in voor uw toepassing. Uw functie-app moet een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit hebben. Als u een beheerde identiteit voor uw functie-app wilt inschakelen en meer wilt weten over de verschillen tussen de twee typen identiteiten, raadpleegt u het overzicht van de beheerde identiteit.
Toegangsrollen toewijzen aan de beheerde identiteit
Navigeer naar de Azure Storage-resource van uw app in de Azure-portal en wijs drie RBAC-rollen (op rollen gebaseerd toegangsbeheer) toe aan de resource voor uw beheerde identiteit:
- Inzender voor opslagwachtrijgegevens
- Inzender voor Storage Blob-gegevens
- Inzender van opslagtabelgegevens
Als u uw identiteitsresource wilt vinden, selecteert u Toegang tot beheerde identiteit toewijzen en selecteert u vervolgens + Leden selecteren
De configuratie van de beheerde identiteit toevoegen aan uw app
Voordat u de beheerde identiteit van uw app kunt gebruiken, moet u enkele wijzigingen aanbrengen in de app-instellingen:
Selecteer in de Azure-portal in het resourcemenu van de functie-app onder SettingsOmgevingsvariabelen.
Zoek AzureWebJobsStorage in de lijst met instellingen en selecteer het pictogram Verwijderen .
Voeg een instelling toe om uw Azure opslagaccount aan de toepassing te koppelen.
Gebruik een van de volgende methoden , afhankelijk van de cloud waarin uw app wordt uitgevoerd:
Azure cloud: Als uw app wordt uitgevoerd in globale Azure, voegt u de instelling
AzureWebJobsStorage__accountNametoe waarmee de naam van een Azure opslagaccount wordt geïdentificeerd. Voorbeeldwaarde:mystorageaccount123On-Azure cloud: Als uw toepassing wordt uitgevoerd in een cloud buiten Azure, moet u de volgende drie instellingen toevoegen om specifieke service-URI's (of endpoints) van het opslagaccount op te geven in plaats van een accountnaam.
Naam van instelling:
AzureWebJobsStorage__blobServiceUriVoorbeeldwaarde:
https://mystorageaccount123.blob.core.windows.net/Naam van instelling:
AzureWebJobsStorage__queueServiceUriVoorbeeldwaarde:
https://mystorageaccount123.queue.core.windows.net/Naam van instelling:
AzureWebJobsStorage__tableServiceUriVoorbeeldwaarde:
https://mystorageaccount123.table.core.windows.net/
U kunt de waarden voor deze URI-variabelen ophalen in de gegevens van het opslagaccount op het tabblad Eindpunten .
Note
Als u Azure Government of een andere cloud gebruikt die losstaat van globale Azure, moet u de optie gebruiken die specifieke service-URI's biedt in plaats van alleen de naam van het opslagaccount. Zie de Ontwikkeling met behulp van de Storage-API in Azure Government voor meer informatie over het gebruik van Azure Storage met Azure Government.
Voltooi de configuratie van uw beheerde identiteit (vergeet niet op Toepassen te klikken nadat u de instellingswijzigingen hebt aangebracht):
Als u een door het systeem toegewezen identiteit gebruikt, moet u geen andere wijzigingen aanbrengen.
Als u een door de gebruiker toegewezen identiteit gebruikt, voegt u de volgende instellingen toe in uw app-configuratie:
AzureWebJobsStorage__credential, voert u managedidentity in
AzureWebJobsStorage__clientId haalt u deze GUID-waarde op uit uw beheerde identiteitsresource
Note
Durable Functions biedt geen ondersteuning voor
managedIdentityResourceIdbij het gebruik van een gebruikerstoegedeelde identiteit. Gebruik in plaats daarvanclientId.
Uw configuratie controleren
Ga als volgt te werk om te controleren of de configuratie van uw beheerde identiteit werkt:
- Navigeer in de Azure-portal naar uw functie-app en activeer uw Durable Functions indeling (bijvoorbeeld met behulp van een HTTP-triggerfunctie).
- Controleer of de orkestratie succesvol is voltooid door een statusquery uit te voeren bij het statuseindpunt of het tabblad Monitor te controleren.
- Als u authenticatiefouten ziet, controleert u of:
- Alle drie de rollen van Inzender voor opslaggegevens zijn toegewezen aan de juiste identiteit.
- De instelling
AzureWebJobsStorageverbindingsreeks wordt verwijderd. - De
AzureWebJobsStorage__accountName(of service-URI)-instellingen zijn juist.