Dela via


Autentisera NET-appar till Azure-tjänster under lokal utveckling med hjälp av tjänstens huvudnamn

När du skapar molnprogram måste utvecklare felsöka och testa program på sin lokala arbetsstation. När ett program körs på en utvecklares arbetsstation under den lokala utvecklingen måste det fortfarande autentiseras mot alla Azure-tjänster som används av appen. Den här artikeln beskriver hur du konfigurerar dedikerade programtjänstobjekt som ska användas under lokal utveckling.

A diagram showing how a .NET app during local development will use the developer's credentials to connect to Azure by obtaining those credentials locally installed development tools.

Med dedikerade huvudnamn för programtjänsten för lokal utveckling kan du följa principen om lägsta behörighet under apputveckling. Eftersom behörigheter är begränsade till exakt vad som behövs för appen under utvecklingen förhindras appkod från att oavsiktligt komma åt en Azure-resurs som är avsedd att användas av en annan app. Detta förhindrar också att buggar inträffar när appen flyttas till produktion eftersom appen överprivilegierades i utvecklingsmiljön.

Ett huvudnamn för programtjänsten konfigureras för appen när appen är registrerad i Azure. När du registrerar appar för lokal utveckling rekommenderar vi att du:

  • Skapa separata appregistreringar för varje utvecklare som arbetar med appen. Detta skapar separata huvudnamn för programtjänsten som varje utvecklare kan använda under lokal utveckling och undviker behovet av att utvecklare delar autentiseringsuppgifter för ett enda huvudnamn för programtjänsten.
  • Skapa separata appregistreringar per app. Detta omfattar endast appens behörigheter till det som behövs av appen.

Under lokal utveckling anges miljövariabler med programtjänstens huvudnamns identitet. Azure SDK för NET läser dessa miljövariabler och använder den här informationen för att autentisera appen till de Azure-resurser den behöver.

1 – Registrera programmet i Azure

Huvudobjekt för programtjänsten skapas med en appregistrering i Azure. Detta kan göras med antingen Azure-portalen eller Azure CLI.

Logga in på Azure-portalen och följ dessa steg.

Instruktioner Skärmbild
I Azure-portalen:
  1. Ange appregistreringar i sökfältet överst i Azure-portalen.
  2. Välj det objekt som är märkt Appregistreringar under rubriken Tjänster på menyn som visas under sökfältet.
A screenshot showing how to use the top search bar in the Azure portal to find and navigate to the App registrations page.
På sidan Appregistreringar väljer du + Ny registrering. A screenshot showing the location of the New registration button in the App registrations page.
På sidan Registrera ett program fyller du i formuläret på följande sätt.
  1. Namn → Ange ett namn för appregistreringen i Azure. Det rekommenderas att det här namnet inkluderar appnamnet, den användare som appregistreringen är för och en identifierare som "dev" som anger att den här appregistreringen ska användas i lokal utveckling.
  2. Kontotyper som stöds → endast konton i den här organisationskatalogen.
Välj Registrera för att registrera din app och skapa programtjänstens huvudnamn.
A screenshot showing how to fill out the Register an application page by giving the app a name and specifying supported account types as accounts in this organizational directory only.
På sidan Appregistrering för din app:
  1. Program-ID → Det här är det app-ID som appen använder för att komma åt Azure under den lokala utvecklingen. Kopiera det här värdet till en tillfällig plats i en textredigerare eftersom du behöver det i ett framtida steg.
  2. Katalog-ID → Det här värdet behövs också av din app när den autentiseras till Azure. Kopiera det här värdet till en tillfällig plats i en textredigerare. Det behövs också i ett framtida steg.
  3. Klientautentiseringsuppgifter → Du måste ange klientautentiseringsuppgifterna för appen innan appen kan autentisera till Azure och använda Azure-tjänster. Välj Lägg till ett certifikat eller en hemlighet för att lägga till autentiseringsuppgifter för din app.
A screenshot of the App registration page after the app registration has been completed. This screenshot shows the location of the application ID and tenant ID, which will be needed in a future step. It also shows the location of the link to use to add an application secret for the app.
På sidan Certifikat och hemligheter väljer du + Ny klienthemlighet. A screenshot showing the location of the link to use to create a new client secret on the certificates and secrets page.
Dialogrutan Lägg till en klienthemlighet visas till höger på sidan. I den här dialogrutan:
  1. Beskrivning → Ange värdet Aktuell.
  2. Upphör → Välj ett värde på 24 månader.
Välj Lägg till för att lägga till hemligheten.
A screenshot showing the page where a new client secret is added for the application service principal create by the app registration process.
På sidan Certifikat och hemligheter visas värdet för klienthemligheten.

Kopiera det här värdet till en tillfällig plats i en textredigerare eftersom du behöver det i ett framtida steg.

VIKTIGT! Det här är den enda gången du ser det här värdet. När du lämnar eller uppdaterar den här sidan kommer du inte att kunna se det här värdet igen. Du kan lägga till ytterligare en klienthemlighet utan att ogiltigförklara den här klienthemligheten, men det här värdet visas inte igen.
A screenshot showing the page with the generated client secret.

2 – Skapa en Azure AD-säkerhetsgrupp för lokal utveckling

Eftersom det vanligtvis finns flera utvecklare som arbetar med ett program rekommenderar vi att du skapar en Azure AD-grupp för att kapsla in de roller (behörigheter) som appen behöver i lokal utveckling i stället för att tilldela rollerna till enskilda objekt för tjänstens huvudnamn. Detta ger följande fördelar.

  • Varje utvecklare är säker på att ha samma roller tilldelade eftersom roller tilldelas på gruppnivå.
  • Om en ny roll behövs för appen behöver den bara läggas till i Azure AD-gruppen för appen.
  • Om en ny utvecklare ansluter till teamet skapas ett nytt huvudnamn för programtjänsten för utvecklaren och läggs till i gruppen, vilket säkerställer att utvecklaren har rätt behörighet att arbeta med appen.
Instruktioner Skärmbild
Gå till Azure Active Directory-sidan i Azure-portalen genom att skriva Azure Active Directory i sökrutan överst på sidan och sedan välja Azure Active Directory under tjänster. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
På sidan Azure Active Directory väljer du Grupper på den vänstra menyn. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
På sidan Alla grupper väljer du Ny grupp. A screenshot showing the location of the New Group button in the All groups page.
På sidan Ny grupp :
  1. GrupptypSäkerhet
  2. Gruppnamn → Ett namn för säkerhetsgruppen, som vanligtvis skapas från programnamnet. Det är också bra att inkludera en sträng som local-dev i namnet på gruppen för att ange syftet med gruppen.
  3. Gruppbeskrivning → En beskrivning av syftet med gruppen.
  4. Välj länken Inga medlemmar har valts under Medlemmar för att lägga till medlemmar i gruppen.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group.
I dialogrutan Lägg till medlemmar:
  1. Använd sökrutan för att filtrera listan med huvudnamn i listan.
  2. Välj programtjänstens huvudnamn för lokal utveckling för den här appen. När objekt markeras blir de nedtonade och flyttas till listan Markerade objekt längst ned i dialogrutan.
  3. När du är klar väljer du knappen Välj .
A screenshot of the Add members dialog box showing how to select application service principals to be included in the group.
På sidan Ny grupp väljer du Skapa för att skapa gruppen.

Gruppen skapas och du kommer tillbaka till sidan Alla grupper . Det kan ta upp till 30 sekunder innan gruppen visas och du kan behöva uppdatera sidan på grund av cachelagring i Azure-portalen.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

3 – Tilldela roller till programmet

Därefter måste du bestämma vilka roller (behörigheter) din app behöver på vilka resurser och tilldela dessa roller till din app. I det här exemplet tilldelas rollerna till den Azure Active Directory-grupp som skapades i steg 2. Roller kan tilldelas en roll i ett resurs-, resursgrupps- eller prenumerationsomfång. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång eftersom de flesta program grupperar alla sina Azure-resurser i en enda resursgrupp.

Instruktioner Skärmbild
Leta upp resursgruppen för ditt program genom att söka efter resursgruppens namn med hjälp av sökrutan överst i Azure-portalen.

Gå till resursgruppen genom att välja resursgruppens namn under rubriken Resursgrupper i dialogrutan.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
På sidan för resursgruppen väljer du Åtkomstkontroll (IAM) på den vänstra menyn. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
På sidan Åtkomstkontroll (IAM):
  1. Välj fliken Rolltilldelningar.
  2. Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning från den resulterande nedrullningsbara menyn.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
sidan Lägg till rolltilldelning visas alla roller som kan tilldelas för resursgruppen.
  1. Använd sökrutan för att filtrera listan till en mer hanterbar storlek. Det här exemplet visar hur du filtrerar efter Storage Blob-roller.
  2. Välj den roll du vill tilldela.
Välj Nästa för att gå till nästa skärm.
A screenshot showing how to filter and select role assignments to be added to the resource group.
På nästa sida För att lägga till rolltilldelning kan du ange vilken användare som ska tilldela rollen till.
  1. Välj Användare, grupp eller tjänstens huvudnamn under Tilldela åtkomst till.
  2. Välj + Välj medlemmar under Medlemmar
En dialogruta öppnas till höger i Azure-portalen.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
I dialogrutan Välj medlemmar:
  1. Textrutan Välj kan användas för att filtrera listan över användare och grupper i din prenumeration. Om det behövs skriver du de första tecknen i azure AD-gruppen för lokal utveckling som du skapade för appen.
  2. Välj den Azure AD-grupp för lokal utveckling som är associerad med ditt program.
Välj Välj längst ned i dialogrutan för att fortsätta.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Azure AD-gruppen visas nu som markerad på skärmen Lägg till rolltilldelning .

Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

4 – Ange miljövariabler för program

Objektet DefaultAzureCredential söker efter informationen om tjänstens huvudnamn i en uppsättning miljövariabler vid körning. Det finns flera sätt att konfigurera miljövariabler när du arbetar med .NET beroende på verktyg och miljö.

Oavsett vilken metod du väljer måste du konfigurera följande miljövariabler när du arbetar med tjänstens huvudnamn.

  • AZURE_CLIENT_ID → App-ID-värdet.
  • AZURE_TENANT_ID → Klientorganisations-ID-värdet.
  • AZURE_CLIENT_SECRET → Lösenordet/autentiseringsuppgifterna som genereras för appen.

När du arbetar lokalt med Visual Studio kan miljövariabler anges i launchsettings.json filen i Properties mappen för projektet. När appen startas hämtas dessa värden automatiskt. Tänk på att dessa konfigurationer inte överförs med ditt program när det distribueras, så du måste fortfarande konfigurera miljövariabler i målvärdmiljön.

"profiles": {
    "SampleProject": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7177;http://localhost:5177",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "AZURE_TENANT_ID":"11111111-1111-1111-1111-111111111111",
        "AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "AZURE_TENANT_ID": "11111111-1111-1111-1111-111111111111",
        "AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
      }
    }
  }

5 – Implementera DefaultAzureCredential i ditt program

DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken autentiseringsmetod som används vid körning. På så sätt kan din app använda olika autentiseringsmetoder i olika miljöer utan att implementera miljöspecifik kod.

Ordningen och platserna där DefaultAzureCredential du söker efter autentiseringsuppgifter finns i StandardAzureCredential.

Om du vill implementera DefaultAzureCredentiallägger du först till Azure.Identity och eventuellt paketen i Microsoft.Extensions.Azure ditt program. Du kan göra detta med antingen kommandoraden eller NuGet Package Manager.

Öppna valfri terminalmiljö i programprojektkatalogen och ange kommandot nedan.

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Azure-tjänster används vanligtvis med motsvarande klientklasser från SDK:et. Dessa klasser och dina egna anpassade tjänster bör registreras i Program.cs filen så att de kan nås via beroendeinmatning i hela appen. Program.csI följer du stegen nedan för att konfigurera tjänsten och DefaultAzureCredential.

  1. Azure.Identity Inkludera namnrymderna och Microsoft.Extensions.Azure med en using-instruktion.
  2. Registrera Azure-tjänsten med relevanta hjälpmetoder.
  3. Skicka en instans av DefaultAzureCredential objektet till UseCredential -metoden.

Ett exempel på detta visas i följande kodsegment.

using Microsoft.Extensions.Azure;
using Azure.Identity;

// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
    x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
    x.UseCredential(new DefaultAzureCredential());
});

Du kan också använda DefaultAzureCredential dina tjänster mer direkt utan hjälp av ytterligare Azure-registreringsmetoder, enligt nedan.

using Azure.Identity;

// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x => 
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

När koden ovan körs på din lokala arbetsstation under den lokala utvecklingen kommer den att titta i miljövariablerna efter ett huvudnamn för programtjänsten eller i Visual Studio, VS Code, Azure CLI eller Azure PowerShell för en uppsättning autentiseringsuppgifter för utvecklare, som kan användas för att autentisera appen till Azure-resurser under lokal utveckling.

När den här koden distribueras till Azure kan den även autentisera din app till andra Azure-resurser. DefaultAzureCredential kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.