Uwierzytelnianie aplikacji platformy .NET w usługach platformy Azure podczas programowania lokalnego przy użyciu kont deweloperów

Podczas tworzenia aplikacji w chmurze deweloperzy muszą debugować i testować aplikacje na lokalnej stacji roboczej. Gdy aplikacja jest uruchamiana na stacji roboczej dewelopera podczas programowania lokalnego, nadal musi uwierzytelniać się w dowolnych usługach platformy Azure używanych przez aplikację. W tym artykule opisano, jak używać poświadczeń platformy Azure dewelopera do uwierzytelniania aplikacji na platformie Azure podczas programowania lokalnego.

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

Aby aplikacja uwierzytelniła się na platformie Azure podczas programowania lokalnego przy użyciu poświadczeń platformy Azure dewelopera, deweloper musi być zalogowany na platformie Azure z poziomu rozszerzenia narzędzi platformy Azure programu VS Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Zestaw Azure SDK dla platformy .NET może wykryć, że deweloper jest zalogowany z jednego z tych narzędzi, a następnie uzyskuje wymagane poświadczenia z pamięci podręcznej poświadczeń w celu uwierzytelnienia aplikacji na platformie Azure jako zalogowanego użytkownika.

To podejście jest najłatwiejsze do skonfigurowania dla zespołu deweloperów, ponieważ korzysta z istniejących kont platformy Azure deweloperów. Jednak konto dewelopera prawdopodobnie będzie mieć więcej uprawnień niż wymagane przez aplikację, dlatego przekroczenie uprawnień, z których aplikacja będzie działać w środowisku produkcyjnym. Alternatywnie można utworzyć jednostki usługi aplikacji do użycia podczas tworzenia lokalnego, które mogą być ograniczone tylko do dostępu wymaganego przez aplikację.

1 — Tworzenie grupy usługi Azure AD na potrzeby programowania lokalnego

Ponieważ prawie zawsze istnieje wielu deweloperów, którzy pracują nad aplikacją, zaleca się najpierw utworzenie grupy usługi Azure AD w celu hermetyzacji ról (uprawnień) wymaganych przez aplikację w lokalnych programach deweloperskich. Oferuje to następujące korzyści.

  • Każdy deweloper ma przypisane te same role, ponieważ role są przypisywane na poziomie grupy.
  • Jeśli dla aplikacji potrzebna jest nowa rola, należy ją dodać tylko do grupy usługi Azure AD dla aplikacji.
  • Jeśli nowy deweloper dołącza do zespołu, po prostu musi zostać dodany do właściwej grupy usługi Azure AD, aby uzyskać odpowiednie uprawnienia do pracy nad aplikacją.

Jeśli masz istniejącą grupę usługi Azure AD dla zespołu deweloperów, możesz użyć tej grupy. W przeciwnym razie wykonaj następujące kroki, aby utworzyć grupę usługi Azure AD.

Instrukcje Zrzut ekranu
Przejdź do strony usługi Azure Active Directory w witrynie Azure Portal, wpisując ciąg Azure Active Directory w polu wyszukiwania w górnej części strony, a następnie wybierając pozycję Azure Active Directory z poziomu usług. 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.
Na stronie Azure Active Directory wybierz pozycję Grupy z menu po lewej stronie. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
Na stronie Wszystkie grupy wybierz pozycję Nowa grupa. A screenshot showing the location of the New Group button in the All groups page.
Na stronie Nowa grupa:
  1. Typ grupy → Zabezpieczenia
  2. Nazwa grupy → nazwa grupy zabezpieczeń, zazwyczaj utworzona na podstawie nazwy aplikacji. Warto również uwzględnić ciąg, taki jak local-dev w nazwie grupy, aby wskazać cel grupy.
  3. Opis grupy → Opis celu grupy.
  4. Wybierz link Brak wybranych członków w obszarze Członkowie, aby dodać członków do grupy.
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
W oknie dialogowym Dodawanie członków:
  1. Użyj pola wyszukiwania, aby filtrować listę nazw użytkowników na liście.
  2. Wybierz użytkowników na potrzeby programowania lokalnego dla tej aplikacji. Po wybraniu obiektów zostaną one przeniesione do listy Wybrane elementy w dolnej części okna dialogowego.
  3. Po zakończeniu wybierz przycisk Wybierz .
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
Po powrocie na stronę Nowa grupa wybierz pozycję Utwórz , aby utworzyć grupę.

Grupa zostanie utworzona i nastąpi powrót do strony Wszystkie grupy . Wyświetlenie grupy może potrwać do 30 sekund i może być konieczne odświeżenie strony z powodu buforowania w witrynie Azure Portal.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

2 — Przypisywanie ról do grupy usługi Azure AD

Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja na temat zasobów i przypisać te role do aplikacji. W tym przykładzie role zostaną przypisane do grupy usługi Azure Active Directory utworzonej w kroku 1. Role mogą być przypisywane do roli w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.

Instrukcje Zrzut ekranu
Znajdź grupę zasobów dla aplikacji, wyszukując nazwę grupy zasobów przy użyciu pola wyszukiwania w górnej części witryny Azure Portal.

Przejdź do grupy zasobów, wybierając nazwę grupy zasobów pod nagłówkiem Grupy zasobów w oknie dialogowym.
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.
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
  1. Wybierz kartę Przypisania roli.
  2. Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
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.
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
  1. Użyj pola wyszukiwania, aby przefiltrować listę do bardziej możliwego do zarządzania rozmiaru. W tym przykładzie pokazano, jak filtrować role obiektów blob usługi Storage.
  2. Wybierz rolę, którą chcesz przypisać.
Wybierz przycisk Dalej , aby przejść do następnego ekranu.
A screenshot showing how to filter and select role assignments to be added to the resource group.
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
  1. Wybierz pozycję Użytkownik, grupa lub jednostka usługi w obszarze Przypisz dostęp do.
  2. Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal.
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.
W oknie dialogowym Wybieranie członków:
  1. Pole tekstowe Wybierz może służyć do filtrowania listy użytkowników i grup w ramach subskrypcji. W razie potrzeby wpisz kilka pierwszych znaków lokalnej grupy deweloperów usługi Azure AD utworzonej dla aplikacji.
  2. Wybierz lokalną grupę deweloperów usługi Azure AD skojarzona z aplikacją.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Grupa usługi Azure AD będzie teraz wyświetlana jako wybrana na ekranie Dodawanie przypisania roli.

Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 — Logowanie się do platformy Azure przy użyciu narzędzi platformy .NET

Następnie musisz zalogować się do platformy Azure przy użyciu jednej z kilku opcji narzędzi platformy .NET. Konto, do którego się logujesz, powinno również istnieć w utworzonej i skonfigurowanej wcześniej grupie usługi Azure Active Directory.

W górnym menu programu Visual Studio przejdź do pozycji Opcje narzędzi>, aby otworzyć okno dialogowe opcji. Na pasku wyszukiwania w lewym górnym rogu wpisz Azure , aby filtrować opcje. W obszarze Uwierzytelnianie usługi platformy Azure wybierz pozycję Wybór konta.

Wybierz menu rozwijane w obszarze Wybierz konto i wybierz opcję dodania konta Microsoft. Zostanie otwarte okno z monitem o wybranie konta. Wprowadź poświadczenia żądanego konta platformy Azure, a następnie wybierz potwierdzenie.

A screenshot showing how to sign in to Azure using Visual Studio.

4 — Implementowanie wartości domyślnejAzureCredential w aplikacji

DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa metodę uwierzytelniania używaną w czasie wykonywania. W ten sposób aplikacja może używać różnych metod uwierzytelniania w różnych środowiskach bez implementowania kodu specyficznego dla środowiska.

Kolejność i lokalizacje, w których DefaultAzureCredential wyszukiwanie poświadczeń znajduje się w obszarze DefaultAzureCredential.

Aby zaimplementować element DefaultAzureCredential, najpierw dodaj Azure.Identity pakiety i opcjonalnie Microsoft.Extensions.Azure do aplikacji. Można to zrobić przy użyciu wiersza polecenia lub Menedżer pakietów NuGet.

Otwórz wybrane środowisko terminalowe w katalogu projektu aplikacji i wprowadź poniższe polecenie.

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

Dostęp do usług platformy Azure jest zwykle uzyskiwany przy użyciu odpowiednich klas klientów z zestawu SDK. Te klasy i własne usługi niestandardowe powinny być zarejestrowane w Program.cs pliku, aby można było uzyskać do nich dostęp za pośrednictwem wstrzykiwania zależności w całej aplikacji. W pliku Program.cswykonaj poniższe kroki, aby poprawnie skonfigurować usługę i DefaultAzureCredential.

  1. Uwzględnij Azure.Identity przestrzenie nazw i Microsoft.Extensions.Azure z instrukcją using.
  2. Zarejestruj usługę platformy Azure przy użyciu odpowiednich metod pomocnika.
  3. Przekaż wystąpienie DefaultAzureCredential obiektu do UseCredential metody .

Przykład jest pokazany w następującym segmencie kodu.

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());
});

Alternatywnie możesz również korzystać DefaultAzureCredential z usług bardziej bezpośrednio bez pomocy dodatkowych metod rejestracji platformy Azure, jak pokazano poniżej.

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()));

Gdy powyższy kod jest uruchamiany na lokalnej stacji roboczej podczas programowania lokalnego, będzie on wyglądał w zmiennych środowiskowych dla jednostki usługi aplikacji lub w programie Visual Studio, VS Code, interfejsie wiersza polecenia platformy Azure lub programie Azure PowerShell dla zestawu poświadczeń dewelopera, których można użyć do uwierzytelniania aplikacji w zasobach platformy Azure podczas programowania lokalnego.

Po wdrożeniu na platformie Azure ten sam kod może również uwierzytelniać aplikację w innych zasobach platformy Azure. DefaultAzureCredential program może automatycznie pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.