Freigeben über


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.

Ein Diagramm, das zeigt, wie eine App, die in einem lokalen Entwickler ausgeführt wird, den Anwendungsdienstprinzipal aus einer ENV-Datei abrufen und diese Identität dann zum Herstellen einer Verbindung mit Azure-Ressourcen verwendet.

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.

Anweisungen Screenshot
Navigieren Sie im Azure-Portal zur Seite Azure Active Directory, indem Sie oben auf der Seite Azure Active Directory in das Suchfeld eingeben und dann unter Dienste Azure Active Directory auswählen. Screenshot: Verwenden der oberen Suchleiste im Azure-Portal, um nach der Azure Active Directory-Seite zu suchen und zu dieser zu navigieren.
Wählen Sie auf der Seite Azure Active Directory im menü auf der linken Seite die Option Gruppen aus. Screenshot: Speicherort des Menüelements
Wählen Sie auf der Seite Alle GruppenNeue Gruppeaus. Screenshot: Position der Schaltfläche „Neue Gruppe
Auf der Seite Neue Gruppe :
  1. GruppentypSecurity
  2. Gruppenname → Ein Name für die Sicherheitsgruppe, der in der Regel aus dem Anwendungsnamen erstellt wird. Es ist auch hilfreich, eine Zeichenfolge wie local-dev in den Namen der Gruppe aufzunehmen, um den Zweck der Gruppe anzugeben.
  3. Gruppenbeschreibung → Eine Beschreibung des Zwecks der Gruppe.
  4. Wählen Sie unter Mitglieder den Link Keine Mitglieder ausgewählt aus, um der Gruppe Mitglieder hinzuzufügen.
Screenshot: Ausfüllen des Formulars zum Erstellen einer neuen Azure Active Directory-Gruppe für die Anwendung Dieser Screenshot zeigt auch den Speicherort des Links, der ausgewählt werden soll, um Mitglieder zu dieser Gruppe hinzuzufügen.
Das Dialogfeld Mitglieder hinzufügen wird angezeigt.
  1. Verwenden Sie das Suchfeld, um die Liste der Benutzernamen in der Liste zu filtern.
  2. Wählen Sie die Benutzer für die lokale Entwicklung für diese App aus. Wenn Objekte ausgewählt sind, werden sie in die Liste Ausgewählte Elemente am unteren Rand des Dialogfelds verschoben.
  3. Wenn Sie fertig sind, wählen Sie die Schaltfläche Auswählen aus.
Screenshot des Dialogfelds Mitglieder hinzufügen, das zeigt, wie Entwicklerkonten ausgewählt werden, die in die Gruppe aufgenommen werden sollen..
Wählen Sie auf der Seite Neue Gruppe die Option Erstellen aus, um die Gruppe zu erstellen.

Die Gruppe wird erstellt, und Sie werden zur Seite Alle Gruppen zurückgeführt. Es kann bis zu 30 Sekunden dauern, bis die Gruppe angezeigt wird, und Sie müssen die Seite möglicherweise aktualisieren, da sie im Azure-Portal zwischengespeichert wird.
Screenshot der Seite „Neue Gruppe

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.

Anweisungen Screenshot
Suchen Sie die Ressourcengruppe für Ihre Anwendung, indem Sie über das Suchfeld oben im Azure-Portal nach dem Namen der Ressourcengruppe suchen.

Navigieren Sie zu Ihrer Ressourcengruppe, indem Sie den Namen der Ressourcengruppe unter der Überschrift Ressourcengruppen im Dialogfeld auswählen.
Screenshot: Verwenden des oberen Suchfelds im Azure-Portal zum Suchen und Navigieren zu der Ressourcengruppe, denen Sie Rollen (Berechtigungen) zuweisen möchten.
Wählen Sie auf der Seite für die Ressourcengruppe im linken Menü Die Option Zugriffssteuerung (IAM) aus. Screenshot der Seite
Klicken Sie auf der Seite Zugriffssteuerungseinstellungen:
  1. Klicken Sie auf die Registerkarte Rollenzuweisungen.
  2. Wählen Sie im oberen Menü + Hinzufügen und aus dem dann angezeigten Dropdownmenü die Option Rollenzuweisung hinzufügen aus.
Screenshot, der zeigt, wie Sie zur Registerkarte Rollenzuweisungen und zum Speicherort der Schaltfläche navigieren, die zum Hinzufügen von Rollenzuweisungen zu einer Ressourcengruppe verwendet wird.
Auf der Seite Rollenzuweisung hinzufügen werden alle Rollen aufgelistet, die der Ressourcengruppe zugewiesen werden können.
  1. Verwenden Sie das Suchfeld, um die Liste auf eine besser verwaltbare Größe zu filtern. In diesem Beispiel wird gezeigt, wie Sie nach Storage-Blobrollen filtern.
  2. Wählen Sie die Rolle aus, die Sie zuweisen möchten.
Klicken Sie auf Weiter, um zum nächsten Bildschirm zu wechseln.
Screenshot: Filtern und Auswählen von Rollenzuweisungen, die der Ressourcengruppe hinzugefügt werden sollen.
Auf der nächsten Seite Rollenzuweisung hinzufügen können Sie angeben, welchem Benutzer die Rolle zugewiesen werden soll.
  1. Wählen Sie unter Zugriff zuweisendie Option Benutzer, Gruppe oder Dienstprinzipal aus.
  2. Wählen Sie unter Mitglieder die Option +Mitglieder auswählen aus.
Auf der rechten Seite des Azure-Portal wird ein Dialogfeld geöffnet.
Screenshot: Optionsfeld zum Zuweisen einer Rolle zu einer Azure AD-Gruppe und link zum Auswählen der Gruppe, der die Rolle zugewiesen werden soll.
Im Dialogfeld Mitglieder auswählen :
  1. Das Textfeld Auswählen kann verwendet werden, um die Liste der Benutzer und Gruppen in Ihrem Abonnement zu filtern. Geben Sie bei Bedarf die ersten Zeichen der lokalen Azure AD-Gruppe ein, die Sie für die App erstellt haben.
  2. Wählen Sie die Azure AD-Gruppe für lokale Entwicklung aus, die Ihrer Anwendung zugeordnet ist.
Wählen Sie unten im Dialogfeld Auswählen aus, um den Vorgang fortzusetzen.
Screenshot: Filtern nach der Azure AD-Gruppe für die Anwendung im Dialogfeld Mitglieder auswählen.
Die Azure AD-Gruppe wird nun auf dem Bildschirm Rollenzuweisung hinzufügen als ausgewählt angezeigt.

Wählen Sie Überprüfen und zuweisen aus, um zur letzten Seite zu gelangen, und wählen Sie erneut Überprüfen und zuweisen aus, um den Vorgang abzuschließen.
Screenshot der abgeschlossenen Seite

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.

Screenshot der Schaltfläche zum Anmelden bei Azure mit Visual Studio.

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.

  1. Schließen Sie die Namespaces Azure.Identity und Microsoft.Extensions.Azure mit einer using-Direktive ein.
  2. Registrieren Sie den Azure-Dienst mithilfe relevanter Hilfsmethoden.
  3. Übergeben Sie eine Instanz des DefaultAzureCredential-Objekts an die UseCredential-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.