Authentifizieren von .NET-Apps bei Azure-Diensten während der lokalen Entwicklung mithilfe von Entwicklerkonten
Beim Erstellen von Cloudanwendungen müssen Entwickler Anwendungen auf ihrer lokalen Arbeitsstation debuggen und testen. Wenn eine Anwendung 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 die Azure-Tools-Erweiterung VS Code, die Azure CLI oder Azure PowerShell bei Azure angemeldet werden. Das Azure SDK für .NET kann erkennen, dass der Entwickler über eines dieser Tools angemeldet ist, und dann die erforderlichen Anmeldeinformationen aus dem Anmeldeinformationscache 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 Anwendung erforderlich, weshalb die Berechtigungen überschritten werden, mit denen die App in der Produktion ausgeführt wird. Alternativ können Sie Anwendungsdienstprinzipale erstellen, die während der lokalen Entwicklung verwendet werden können, die nur den Zugriff haben können, der von der App benötigt wird.
1: Erstellen einer Azure AD-Gruppe für die lokale Entwicklung
Da fast immer mehrere Entwickler an einer Anwendung arbeiten, wird empfohlen, zunächst eine Azure AD-Gruppe zu erstellen, um die Rollen (Berechtigungen) zu kapseln, die die App in der lokalen Entwicklung benötigt. Dies bietet die folgenden 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 Azure AD-Gruppe für die App hinzugefügt werden.
- Wenn ein neuer Entwickler dem Team beitritt, muss er einfach der richtigen Azure AD-Gruppe hinzugefügt werden, um die richtigen Berechtigungen für die Arbeit an der App zu erhalten.
Wenn Sie über eine azure AD-Gruppe für Ihr Entwicklungsteam verfügen, können Sie diese Gruppe verwenden. Führen Sie andernfalls die folgenden Schritte aus, um eine Azure AD-Gruppe zu erstellen.
2: Zuweisen von Rollen zur Azure AD-Gruppe
Als Nächstes müssen Sie bestimmen, welche Rollen (Berechtigungen) Ihre App für welche Ressourcen benötigt, und diese Rollen Ihrer App zuweisen. In diesem Beispiel werden die Rollen der Azure Active Directory-Gruppe zugewiesen, die in Schritt 1 erstellt wurde. Rollen können in einem Ressourcen-, Ressourcengruppen- oder Abonnementbereich eine Rolle zugewiesen werden. In diesem Beispiel wird gezeigt, wie Sie Rollen im Ressourcengruppenbereich zuweisen, da die meisten Anwendungen alle azure-Ressourcen in einer einzelnen Ressourcengruppe gruppieren.
3 : Anmelden bei Azure mit .NET-Tools
Als Nächstes müssen Sie sich mit einer von mehreren .NET-Tooloptionen bei Azure anmelden. Das Konto, bei dem Sie sich anmelden, sollte auch in der Azure Active Directory-Gruppe vorhanden sein, die Sie zuvor erstellt und konfiguriert haben.
Navigieren Sie im oberen Menü von Visual Studio zu Extras>Optionen , um das Dialogfeld Optionen zu öffnen. Geben Sie in der Suchleiste oben links Azure ein, um die Optionen zu filtern. Wählen Sie unter Azure-Dienstauthentifizierungdie 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.
4. Implementieren von DefaultAzureCredential in Ihrer Anwendung
DefaultAzureCredential
unterstützt mehrere Authentifizierungsmethoden und bestimmt die zur Laufzeit verwendete Authentifizierungsmethode. Auf diese Weise kann Ihre App verschiedene Authentifizierungsmethoden in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu implementieren.
Die Reihenfolge und die Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential
finden Sie unter DefaultAzureCredential.
Um zu implementieren DefaultAzureCredential
, fügen Sie zuerst die Azure.Identity
Pakete und optional zu Microsoft.Extensions.Azure
Ihrer Anwendung hinzu. Dazu können Sie entweder die Befehlszeile oder den NuGet-Paket-Manager verwenden.
Öffnen Sie eine Terminalumgebung Ihrer Wahl im Anwendungsprojektverzeichnis, und geben Sie den folgenden Befehl ein.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Auf Azure-Dienste wird im Allgemeinen über entsprechende Clientklassen aus dem SDK zugegriffen. Diese Klassen und Ihre eigenen benutzerdefinierten Dienste sollten in der Datei Program.cs
registriert werden, damit über die Abhängigkeitsinjektion in der gesamten App darauf zugegriffen werden kann. Führen Sie innerhalb von Program.cs
die folgenden Schritte aus, um Ihren Dienst und DefaultAzureCredential
ordnungsgemäß einzurichten.
- Schließen Sie die
Azure.Identity
Namespaces undMicrosoft.Extensions.Azure
in eine using-Anweisung ein. - Registrieren Sie den Azure-Dienst mithilfe relevanter Hilfsmethoden.
- Übergeben Sie eine Instanz des
DefaultAzureCredential
-Objekts an dieUseCredential
-Methode.
Ein Beispiel dafür wird im folgenden Codeausschnitt gezeigt.
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());
});
Alternativ können Sie ihre Dienste auch direkter nutzen DefaultAzureCredential
, ohne zusätzliche Azure-Registrierungsmethoden zu verwenden, wie unten zu sehen.
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()));
Wenn der obige Code während der lokalen Entwicklung auf Ihrer lokalen Arbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in Visual Studio, VS Code, der Azure CLI oder Azure PowerShell nach einer Reihe von Entwickleranmeldeinformationen, von denen beide zur Authentifizierung der App bei Azure-Ressourcen während der lokalen Entwicklung verwendet werden können.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für