Uwierzytelnianie aplikacji hostowanych na platformie Azure do zasobów platformy Azure przy użyciu zestawu Azure SDK dla platformy .NET
Jeśli aplikacja jest hostowana na platformie Azure przy użyciu usługi, takiej jak aplikacja systemu Azure Service, Azure Virtual Machines lub Azure Container Instances, zalecanym podejściem do uwierzytelniania aplikacji w zasobach platformy Azure jest użycie tożsamości zarządzanej.
Tożsamość zarządzana zapewnia tożsamość aplikacji, tak aby mogła łączyć się z innymi zasobami platformy Azure bez konieczności używania klucza tajnego lub innego wpisu tajnego aplikacji. Wewnętrznie platforma Azure zna tożsamość aplikacji i zasoby, z którymi może się łączyć. Platforma Azure używa tych informacji do automatycznego uzyskiwania tokenów usługi Microsoft Entra dla aplikacji, aby umożliwić jej łączenie się z innymi zasobami platformy Azure bez konieczności zarządzania wpisami tajnymi aplikacji.
Typy tożsamości zarządzanych
Istnieją dwa typy tożsamości zarządzanych:
- Przypisane przez system — ten typ tożsamości zarządzanej jest dostarczany i powiązany bezpośrednio z zasobem platformy Azure. Po włączeniu tożsamości zarządzanej w zasobie platformy Azure uzyskasz tożsamość zarządzaną przypisaną przez system dla tego zasobu. Tożsamość zarządzana przypisana przez system jest powiązana z cyklem życia zasobu platformy Azure, z którym jest skojarzony. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Ponieważ wystarczy włączyć tożsamość zarządzaną dla zasobu platformy Azure hostowania kodu, jest to najprostszy typ tożsamości zarządzanej do użycia.
- Przypisane przez użytkownika — możesz również utworzyć tożsamość zarządzaną jako autonomiczny zasób platformy Azure. Jest to najczęściej używane, gdy rozwiązanie ma wiele obciążeń uruchamianych w wielu zasobach platformy Azure, które muszą współdzielić tę samą tożsamość i te same uprawnienia. Jeśli na przykład rozwiązanie zawiera składniki uruchomione w wielu wystąpieniach usługi App Service i maszyn wirtualnych, które wymagały dostępu do tego samego zestawu zasobów platformy Azure, tworzenie i używanie tożsamości zarządzanej przypisanej przez użytkownika w tych zasobach miałoby sens.
W tym artykule opisano kroki włączania i używania tożsamości zarządzanej przypisanej przez system dla aplikacji. Jeśli musisz użyć tożsamości zarządzanej przypisanej przez użytkownika, zobacz artykuł Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika, aby zobaczyć, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika.
1 — Włączanie tożsamości zarządzanej w zasobie platformy Azure hostowania aplikacji
Pierwszym krokiem jest włączenie tożsamości zarządzanej na platformie Azure hostowania aplikacji. Jeśli na przykład hostujesz aplikację platformy .NET przy użyciu usługi aplikacja systemu Azure Service, musisz włączyć tożsamość zarządzaną dla aplikacji internetowej usługi App Service, która hostuje aplikację. Jeśli używasz maszyny wirtualnej do hostowania aplikacji, możesz zezwolić maszynie wirtualnej na korzystanie z tożsamości zarządzanej.
Tożsamość zarządzaną można włączyć dla zasobu platformy Azure przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
2 — Przypisywanie ról do tożsamości zarządzanej
Następnie określ role (uprawnienia) wymagane przez aplikację i przypisz tożsamość zarządzaną do tych ról na platformie Azure. Tożsamość zarządzana może mieć przypisane role 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.
3 — Implementowanie wartości domyślnejAzureCredential w aplikacji
DefaultAzureCredential to uporządkowana sekwencja mechanizmów uwierzytelniania w firmie Microsoft Entra. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z klasy TokenCredential i jest nazywana poświadczeniami. W czasie wykonywania DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.
Kolejność i lokalizacje, w których DefaultAzureCredential
wyszukiwanie poświadczeń znajduje się w obszarze DefaultAzureCredential.
Aby użyć DefaultAzureCredential
polecenia , dodaj pakiet Azure.Identity i opcjonalnie pakiety Microsoft.Extensions.Azure do aplikacji:
W wybranym terminalu przejdź do katalogu projektu aplikacji i uruchom następujące polecenia:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. Te klasy i własne usługi niestandardowe powinny być zarejestrowane, aby można było uzyskać do nich dostęp za pośrednictwem wstrzykiwania zależności w całej aplikacji. W Program.cs
programie wykonaj następujące kroki, aby zarejestrować klasę klienta i DefaultAzureCredential
:
- Uwzględnij
Azure.Identity
przestrzenie nazw iMicrosoft.Extensions.Azure
za pomocąusing
dyrektyw. - Zarejestruj klienta usługi platformy Azure przy użyciu odpowiedniej
Add
metody rozszerzenia z prefiksem. - Przekaż wystąpienie
DefaultAzureCredential
metodyUseCredential
.
Na przykład:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Alternatywą jest UseCredential
utworzenie wystąpienia DefaultAzureCredential
bezpośrednio:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Po uruchomieniu poprzedniego kodu na lokalnej stacji roboczej programistycznej w zmiennych środowiskowych dla jednostki usługi aplikacji lub w lokalnie zainstalowanych narzędziach deweloperskich, takich jak Program Visual Studio, dla zestawu poświadczeń dewelopera. Jedną z metod 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.