Authentifizieren von .NET-Apps bei Azure-Diensten während der lokalen Entwicklung mithilfe von Entwicklerkonten
Entwickler müssen Cloud-Apps auf ihren lokalen Arbeitsstationen debuggen und testen. Wenn eine App während der lokalen Entwicklung auf der Arbeitsstation eines Entwicklers ausgeführt wird, muss sie sich weiterhin bei allen von der App verwendeten Azure-Diensten authentifizieren. In diesem Artikel wird beschrieben, wie Sie die Azure-Anmeldeinformationen eines Entwicklers verwenden, um die App während der lokalen Entwicklung bei Azure zu authentifizieren.
Damit sich eine App während der lokalen Entwicklung mit den Azure-Anmeldeinformationen des Entwicklers bei Azure authentifizieren kann, muss der Entwickler über eins der folgenden Entwicklertools bei Azure angemeldet werden:
- Visual Studio
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
Die Azure Identity-Bibliothek kann erkennen, dass der Entwickler über eins dieser Tools angemeldet wird. Anschließend kann die Bibliothek das Microsoft Entra-Zugriffstoken über das Tool abrufen, um die App bei Azure als angemeldeten Benutzer zu authentifizieren.
Dieser Ansatz ist am einfachsten für ein Entwicklungsteam einzurichten, da es die Vorteile der vorhandenen Azure-Konten der Entwickler nutzt. Das Konto eines Entwicklers verfügt jedoch wahrscheinlich über mehr Berechtigungen als für die App erforderlich, weshalb die Berechtigungen überschritten werden, mit denen die App in der Produktion ausgeführt wird. Alternativ können Sie Anwendungsdienstprinzipale für die Verwendung während der lokalen Entwicklung erstellen, die nur den Zugriff haben können, der von der App benötigt wird.
1: Erstellen einer Microsoft Entra-Gruppe für die lokale Entwicklung
Da fast immer mehrere Entwickler an einer Anwendung arbeiten, wird eine Microsoft Entra-Gruppe empfohlen, um die Rollen (Berechtigungen) zu kapseln, die die App in der lokalen Entwicklung benötigt. Diese Vorgehensweise bietet folgende Vorteile:
- Jedem Entwickler wird sichergestellt, dass dieselben Rollen zugewiesen werden, da Rollen auf Gruppenebene zugewiesen werden.
- Wenn eine neue Rolle für die App erforderlich ist, muss sie nur der Gruppe für die App hinzugefügt werden.
- Wenn ein neuer Entwickler dem Team beitritt, erhält er die erforderlichen Berechtigungen für die Arbeit an der App, nachdem er der Gruppe hinzugefügt wurde.
Wenn Sie über eine Microsoft Entra-Gruppe für Ihr Entwicklungsteam verfügen, können Sie diese Gruppe verwenden. Führen Sie andernfalls die folgenden Schritte aus, um eine Microsoft Entra-Gruppe zu erstellen.
Hinweis
Standardmäßig ist die Erstellung von Microsoft Entra-Gruppen auf bestimmte privilegierte Rollen in einem Verzeichnis beschränkt. Wenn Sie keine Gruppe erstellen können, wenden Sie sich an einen Administrator für Ihr Verzeichnis. Wenn Sie einer vorhandenen Gruppe keine Mitglieder hinzufügen können, wenden Sie sich an den Gruppenbesitzer oder einen Verzeichnisadministrator. Weitere Informationen finden Sie unter Verwalten von Microsoft Entra-Gruppen und -Gruppenmitgliedschaften.
2: Zuweisen von Rollen zur Microsoft Entra-Gruppe
Bestimmen Sie als Nächstes, welche Rollen (Berechtigungen) Ihre App für welche Ressourcen benötigt, und diese Rollen Ihrer App zuweisen. In diesem Beispiel werden die Rollen der in Schritt 1 erstellten Microsoft Entra-Gruppe zugewiesen. Gruppen kann in einem Ressourcen-, Ressourcengruppen- oder Abonnementbereich eine Rolle zugewiesen werden. In diesem Beispiel wird gezeigt, wie Sie Rollen im Ressourcengruppenbereich zuweisen, da die meisten Apps alle Azure-Ressourcen in einer einzelnen Ressourcengruppe gruppieren.
3 : Anmelden bei Azure mithilfe von Entwicklertools
Melden Sie sich als Nächstes mit einem der Entwicklertools bei Azure an. Das Konto, das Sie authentifizieren, sollte auch in der Microsoft Entra-Gruppe vorhanden sein, die Sie zuvor erstellt und konfiguriert haben.
Navigieren Sie zu Extras>Optionen, um das Dialogfeld „Optionen“ zu öffnen.
Geben Sie oben im Feld Suchoptionen den Begriff Azure ein, um die verfügbaren Optionen zu filtern.
Wählen Sie unter Azure-Dienstauthentifizierung die Option Kontoauswahl aus.
Wählen Sie das Dropdownmenü unter Konto auswählen aus, und fügen Sie ein Microsoft-Konto hinzu. Ein Fenster wird geöffnet, in dem Sie zur Auswahl eines Kontos aufgefordert werden. Geben Sie die Anmeldeinformationen für Ihr gewünschtes Azure-Konto ein, und wählen Sie dann die Bestätigung aus.
Wählen Sie OK aus, um das Dialogfeld „Optionen“ zu schließen.
4. Implementieren von DefaultAzureCredential in Ihrer Anwendung
DefaultAzureCredential ist eine dogmatische, sortierte Sequenz von Mechanismen für die Authentifizierung bei Microsoft Entra. Jeder Authentifizierungsmechanismus ist eine von der TokenCredential-Klasse abgeleitete Klasse, die als Anmeldeinformationen bezeichnet wird. Zur Laufzeit versucht DefaultAzureCredential
, sich mit den ersten Anmeldeinformationen zu authentifizieren. Wenn diese Anmeldeinformationen kein Zugriffstoken abrufen, werden die nächsten Anmeldeinformationen in der Sequenz ausprobiert usw., bis erfolgreich ein Zugriffstoken abgerufen wurde. Auf diese Weise kann Ihre App unterschiedliche Anmeldeinformationen in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu schreiben.
Die Reihenfolge und die Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential
finden Sie unter DefaultAzureCredential.
Fügen Sie zur Verwendung von DefaultAzureCredential
das Paket Azure.Identity und optional das Paket Microsoft.Extensions.Azure zu Ihrer Anwendung hinzu:
Navigieren Sie in einem Terminal Ihrer Wahl zum Anwendungsprojektverzeichnis, und führen Sie die folgenden Befehle aus:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Auf Azure-Dienste wird mithilfe spezieller Clientklassen aus den verschiedenen Azure SDK-Clientbibliotheken zugegriffen. Diese Klassen und Ihre eigenen benutzerdefinierten Dienste sollten registriert werden, damit über die Abhängigkeitsinjektion in der gesamten App darauf zugegriffen werden kann. Führen Sie in Program.cs
die folgenden Schritte aus, um eine Clientklasse und DefaultAzureCredential
zu registrieren:
- Schließen Sie die Namespaces
Azure.Identity
undMicrosoft.Extensions.Azure
überusing
-Direktiven ein. - Registrieren Sie den Azure-Dienstclient mithilfe der entsprechenden Erweiterungsmethode mit dem Präfix
Add
. - Übergeben Sie eine Instanz von
DefaultAzureCredential
an dieUseCredential
-Methode.
Zum Beispiel:
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());
});
Eine Alternative zu UseCredential
besteht darin, DefaultAzureCredential
direkt zu instanziieren:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Wenn der vorherige Code auf Ihrer lokalen Entwicklungsarbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in lokal installierten Entwicklertools (etwa Visual Studio) nach einem Satz von Entwickleranmeldeinformationen. Beide Ansätze können verwendet werden, um die App während der lokalen Entwicklung bei Azure-Ressourcen zu authentifizieren.
Bei der Bereitstellung in Azure kann dieser Code Ihre App auch bei anderen Azure-Ressourcen authentifizieren. DefaultAzureCredential
kann Umgebungseinstellungen und Konfigurationen für verwaltete Identitäten abrufen, um sich automatisch bei anderen Diensten zu authentifizieren.