Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Denna snabbstart visar hur man konfigurerar en Durable Functions-app att använda identitetsbaserade anslutningar för antingen Durable Task Scheduler-backend eller Azure Storage-leverantören. Azure-plattformen hanterar en hanterad identitet från Microsoft Entra ID – du behöver inte provisionera eller rotera några hemligheter.
Den här vägen förutsätter att din app redan är konfigurerad för att använda Durable Task Scheduler som backend. Om din app fortfarande använder Azure Storage-leverantören, välj Azure Storage-vägen i den här artikeln.
I den här artikeln:
- Installation av lokal utveckling – Använd Azurite eller dina autentiseringsuppgifter för utvecklare för lokal testning
- Identitetsbaserade anslutningar för appar som distribuerats till Azure – Aktivera en hanterad identitet och konfigurera funktionsappen
Note
Hanterad identitet stöds i Durable Functions-tillägget versioner 2.7.0 och senare.
Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
Förutsättningar
Följande krävs för att slutföra den här snabbstarten:
- Ett befintligt Durable Functions projekt som skapats i Azure-portalen eller ett lokalt Durable Functions projekt som distribuerats till Azure.
- Kunskaper om att köra en Durable Functions app i Azure.
Om du inte har ett befintligt Durable Functions projekt distribuerat i Azure rekommenderar vi att du börjar med någon av följande snabbstarter:
- Skapa din första hållbara funktion – C#
- Skapa din första varaktiga funktion – JavaScript
- Skapa din första hållbara funktion – Python
- Skapa din första hållbara funktion – PowerShell
- Skapa din första hållbara funktion – Java
Konfigurering för lokal utveckling
Du har två alternativ för lokal utveckling. Använd den lokala emulatorn Durable Task Scheduler för snabb testning utan Azure-uppgifter. Om du behöver testa identitetsbaserade anslutningar mot en aktiv resurs i schemaläggaren använder du i stället dina utvecklarautentiseringsuppgifter.
Alternativ 1: Använd den lokala emulatorn Durable Task Scheduler
När du utvecklar lokalt, använd emulatorn Durable Task Scheduler så att du kan testa din app utan Azure-uppgifter. Konfigurera dina appinställningar så att de pekar på emulatorn och använd standardaktivitetshubben.
{
"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"
}
}
Alternativ 2: Identitetsbaserade anslutningar för lokal utveckling
Strikt taget är en hanterad identitet endast tillgänglig för appar när de körs i Azure. Du kan dock fortfarande konfigurera en lokalt körande app att använda identitetsbaserade anslutningar genom att använda dina utvecklaruppgifter för att autentisera mot din schemaläggarresurs. När appen sedan distribueras till Azure använder den istället konfigurationen för hanterad identitet.
När du använder utvecklaruppgifter försöker anslutningen hämta en token från följande platser, i denna ordning:
- En lokal cache som delas mellan Microsoft-program
- Den aktuella användarkontexten i Visual Studio
- Den aktuella användarkontexten i Visual Studio Code
- Den aktuella användarkontexten i Azure CLI
Om inget av dessa alternativ lyckas visas ett fel som anger att appen inte kan hämta en autentiseringstoken. Kontrollera att du är inloggad i något av de listade verktygen med ett konto som har åtkomst till din schemaläggningsresurs.
Konfigurera körning för att använda lokal utvecklaridentitet
I dina lokala inställningar anger du slutpunkten för schemaläggaren och använder
Authentication=DefaultAzureså att appen använder dina autentiseringsuppgifter för utvecklare.{ "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>" } }Ge din utvecklaridentitet rollen
Durable Task Data Contributorför schemaläggningsresursen eller inom det specifika aktivitetsnavets omfång.
Identitetsbaserade anslutningar för appar som distribuerats till Azure
Aktivera en hanterad identitetsresurs
Aktivera en hanterad identitet för din arbetsapp. Funktionsappen måste antingen ha en systemtilldelad hanterad identitet eller en användartilldelad hanterad identitet. Information om hur du aktiverar en hanterad identitet för funktionsappen och om du vill veta mer om skillnaderna mellan de två typerna av identiteter finns i översikten över hanterad identitet.
Tilldela åtkomstroller till den hanterade identiteten
Navigera till resursen för schemaläggaren i Azure-portalen och tilldela Durable Task Data Contributor-rollen till din hanterade identitet. För åtkomst enligt principen om minsta privilegium tilldelar du rollen på aktivitetsnavets nivå i stället för för hela schemaläggaren. Om du använder en användar-tilldelad identitet, välj Managed identity och sedan + Välj medlemmar.
Lägga till konfigurationen för hanterad identitet i din app
Innan du kan använda appens hanterade identitet gör du några ändringar i appinställningarna:
I Azure-portalen går du till funktionsappens resursmeny under Settings och väljer Environmentvariabler.
Lägg till eller uppdatera inställningen
DTS_CONNECTION_STRINGså att appen ansluter till din schemaläggare genom att använda appens hanterade identitet.Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentityOm du använder en användartilldelad hanterad identitet, inkludera klient-ID:t i reťazec pripojenia:
Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>Lägg till eller uppdatera
TASKHUB_NAME-inställningen med samma aktivitetshubbnamn.Om din Funktionsvärd behöver Azure Storage för drifter på värdnivå, konfigurera
AzureWebJobsStorageseparat. Schemaläggarens serverdel använder DTS-anslutningssträngen i stället förAzureWebJobsStorageför varaktigt tillstånd.
Verifiera din konfiguration
Så här bekräftar du att konfigurationen av hanterade identiteter fungerar:
- I Azure-portalen navigerar du till din Function-app och triggar din Durable Functions-orkestrering.
- Kontrollera att orkestreringen slutförs utan problem genom att anropa statusslutpunkten eller kontrollera fliken Monitor.
- Om du ser autentiseringsfel kontrollerar du att:
- Den hanterade identiteten har rollen
Durable Task Data Contributorför schemaläggarresursen eller aktivitetshubbens omfång. - Inställningarna
TASKHUB_NAMEochDTS_CONNECTION_STRINGär korrekta. - Appen använder den förväntade identiteten när den körs i Azure.
- Den hanterade identiteten har rollen
Konfigurering för lokal utveckling
Du har två alternativ för lokal utveckling. Använd Azurite för snabb lokal testning utan Azure autentiseringsuppgifter. Om du behöver testa identitetsbaserade anslutningar mot ett verkligt Azure Storage konto använder du dina autentiseringsuppgifter för utvecklare i stället.
Alternativ 1: Använd Azure Storage-emulatorn
När du utvecklar lokalt rekommenderar vi att du använder Azurite, som är Azure Storage lokala emulatorn. Konfigurera din app till emulatorn genom att "AzureWebJobsStorage": "UseDevelopmentStorage=true" ange i local.settings.json.
Alternativ 2: Identitetsbaserade anslutningar för lokal utveckling
Strikt sett är en hanterad identitet endast tillgänglig för appar när den körs på Azure. Du kan dock fortfarande konfigurera en lokalt körd app för att använda identitetsbaserad anslutning med hjälp av dina autentiseringsuppgifter för utvecklare för att autentisera mot Azure resurser. När den sedan distribueras på Azure använder appen din hanterade identitetskonfiguration i stället.
När du använder autentiseringsuppgifter för utvecklare försöker anslutningen hämta en token från följande platser i den här ordningen:
- En lokal cache som delas mellan Microsoft-program
- Den aktuella användarkontexten i Visual Studio
- Den aktuella användarkontexten i Visual Studio Code
- Den aktuella användarkontexten i Azure CLI
Om inget av dessa alternativ lyckas visas ett fel som anger att appen inte kan hämta en autentiseringstoken. Kontrollera att du är inloggad på något av verktygen i listan med ett konto som har åtkomst till ditt Azure Storage konto.
Konfigurera körning för att använda lokal utvecklaridentitet
Ange namnet på ditt Azure Storage konto i local.settings.json, till exempel:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Gå till din Azure Storage kontoresurs i Azure-portalen.
Välj fliken Access Control (IAM) och välj sedan Lägg till rolltilldelning.
Tilldela var och en av följande roller till dig själv. För varje roll väljer du "+ Välj medlemmar" och söker efter e-postmeddelandet som du använder för att logga in på Visual Studio, Visual Studio Code eller Azure CLI.
- Storage Queue Data-medverkande
- Storage Blob Data-bidragsgivare
- Storage Table Data-bidragsgivare
Note
Det här är samma tre roller som krävs för din hanterade identitet när du distribuerar till Azure. Se Tilldela åtkomstroller till den hanterade identiteten.
Identitetsbaserade anslutningar för appar som distribuerats till Azure
Aktivera en hanterad identitetsresurs
Börja med att aktivera en hanterad identitet för ditt program. Funktionsappen måste antingen ha en systemtilldelad hanterad identitet eller en användartilldelad hanterad identitet. Information om hur du aktiverar en hanterad identitet för funktionsappen och om du vill veta mer om skillnaderna mellan de två typerna av identiteter finns i översikten över hanterad identitet.
Tilldela åtkomstroller till den hanterade identiteten
Gå till din apps Azure Storage-resurs på Azure-portalen och tilldela tre rollbaserade åtkomstkontrollroller (RBAC)-roller till din hanterade identitetsresurs.
- Storage Queue Data-medverkande
- Storage Blob Data-bidragsgivare
- Storage Table Data-bidragsgivare
Om du vill hitta din identitetsresurs väljer du tilldela åtkomst till hanterad identitet och sedan + Välj medlemmar
Lägga till konfigurationen för hanterad identitet i din app
Innan du kan använda appens hanterade identitet gör du några ändringar i appinställningarna:
I Azure-portalen går du till funktionsappens resursmeny under Settings och väljer Environmentvariabler.
I listan med inställningar letar du upp AzureWebJobsStorage och väljer ikonen Ta bort .
Lägg till en inställning för att länka ditt Azure lagringskonto till programmet.
Använd någon av följande metoder beroende på molnet som appen körs i:
Azure cloud: Om appen körs i global Azure lägger du till inställningen
AzureWebJobsStorage__accountNamesom identifierar ett Azure lagringskontonamn. Exempelvärde:mystorageaccount123Non-Azure cloud: Om programmet körs i ett moln utanför Azure måste du lägga till följande tre inställningar för att tillhandahålla specifika tjänst-URI:er (eller endpoints) för lagringskontot i stället för ett kontonamn.
Inställningsnamn:
AzureWebJobsStorage__blobServiceUriExempelvärde:
https://mystorageaccount123.blob.core.windows.net/Inställningsnamn:
AzureWebJobsStorage__queueServiceUriExempelvärde:
https://mystorageaccount123.queue.core.windows.net/Inställningsnamn:
AzureWebJobsStorage__tableServiceUriExempelvärde:
https://mystorageaccount123.table.core.windows.net/
Du kan hämta värdena för dessa URI-variabler i lagringskontoinformationen från fliken Slutpunkter .
Note
Om du använder Azure Government eller något annat moln som är skilt från globala Azure, måste du använda alternativet som tillhandahåller specifika tjänst-URI:er i stället för bara lagringskontonamnet. Mer information om hur du använder Azure Storage med Azure Government finns i Develop med hjälp av Lagrings-API:et i Azure Government.
Slutför konfigurationen av den hanterade identiteten (kom ihåg att klicka på "Tillämpa" när du har gjort inställningsändringarna):
Om du använder en systemtilldelad identitet gör du inga andra ändringar.
Om du använder en användartilldelad identitet lägger du till följande inställningar i appkonfigurationen:
AzureWebJobsStorage__credential, ange managedidentity
AzureWebJobsStorage__clientId, hämta detta GUID-värde från din hanterade identitetsresurs
Note
Durable Functions stöder inte
managedIdentityResourceIdvid användning av användartilldelad identitet. AnvändclientIdi stället.
Verifiera din konfiguration
Så här bekräftar du att konfigurationen av hanterade identiteter fungerar:
- I Azure-portalen går du till funktionsappen och utlöser Durable Functions orkestrering (till exempel med hjälp av en HTTP-utlösarfunktion).
- Kontrollera att orkestreringen har slutförts framgångsrikt genom att fråga statusslutpunkten eller kontrollera fliken Övervakning.
- Om du ser autentiseringsfel kontrollerar du att:
- Alla tre rollerna för lagringsdatabidragare tilldelas rätt identitet.
- Inställningen
AzureWebJobsStoragereťazec pripojenia tas bort. -
AzureWebJobsStorage__accountNameinställningar (eller tjänst-URI) är korrekta.