Authentifizieren von Batch Management-Lösungen mit Microsoft Entra ID

Anwendungen, die den Azure Batch-Verwaltungsdienst aufrufen, authentifizieren sich mit Microsoft Entra ID, dem cloudbasierten mandantenfähigen Verzeichnis- und Identitätsverwaltungsdienst von Microsoft. Azure selbst verwendet Microsoft Entra ID, um seine Kunden, Dienstadministratoren und Organisationsbenutzer zu authentifizieren.

Die empfohlene Methode zum Authentifizieren von Batchverwaltungs-Apps besteht darin, die Azure Identity-Clientbibliothek zusammen mit dem Azure zu verwenden. ResourceManager.Batch-Verwaltungsbibliothek. Die Azure Identitätsbibliothek stellt tokenbasierte Anmeldeinformationsklassen (z. B. DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential und InteractiveBrowserCredential) bereit, die konsistent funktionieren, ob Ihre App lokal, auf Azure oder lokal ausgeführt wird. Eine Übersicht über empfohlene Authentifizierungsstrategien finden Sie unter Authenticate .NET apps to Azure services using the Azure Identity library.

Die Azure.ResourceManager.Batch-Bibliothek macht Typen für die Verwaltung von Batchkonten, Kontoschlüsseln, Anwendungen und Anwendungspaketen verfügbar. Es handelt sich um einen Azure Ressourcenanbieterclient und arbeitet mit Azure Resource Manager zusammen, um diese Ressourcen programmgesteuert zu verwalten. Microsoft Entra ID ist erforderlich, um Anforderungen zu authentifizieren, die über einen beliebigen Azure Ressourcenanbieterclient vorgenommen wurden, einschließlich dieser Bibliothek.

Note

Das Legacy-Microsoft.Azure.Management.Batch-Paket und ADAL-basierte Codemuster (AuthenticationContext.AcquireToken) sind veraltet. Neuer Code sollte Azure.ResourceManager.Batch mit Azure.Identity-Anmeldeinformationen verwenden.

Weitere Informationen zur Verwendung der Batchverwaltungs-.NET-Bibliothek finden Sie unter Manage Batchkonten und Kontingente mit der Batchverwaltungsclientbibliothek für .NET.

Registrieren einer Anwendung (optional)

Ob Sie eine separate Microsoft Entra Anwendung registrieren müssen, hängt vom verwendeten Anmeldeinformationstyp ab:

  • Wenn Sie DefaultAzureCredential verwenden und sich über ein Entwicklertool (Azure CLI, Azure PowerShell, Visual Studio oder Visual Studio Code) anmelden oder Ihre App auf einer Azure Ressource mit einer verwalteten Identität ausgeführt wird, müssen Sie keine separate Anwendung registrieren. Die Anmeldeinformationen verwenden die identität, die bereits in dieser Umgebung konfiguriert ist.
  • Wenn sich Ihre App als Dienstprinzipal authentifiziert (z. B. mit ClientSecretCredential oder ClientCertificateCredential), müssen Sie in Ihrem Microsoft Entra-Mandanten eine Anwendung registrieren.

Führen Sie zum Registrieren einer Anwendung die Schritte unter Schnellstart: Registrieren einer Anwendung mit der Microsoft Identity Platform aus. Nach der Registrierung stellt Microsoft Entra ID eine Anwendungs-ID (Client-ID) bereit, die Sie zur Laufzeit verwenden. Weitere Informationen finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID.

Azure RBAC-Berechtigungen zuweisen

Nachdem Sie entschieden haben, welche Identität Ihre App verwendet (ein Entwicklerkonto, eine verwaltete Identität oder ein Dienstprinzipal), weisen Sie diese Identität den berechtigungen der Azure rollenbasierten Zugriffssteuerung (RBAC) zu, die sie für die Ressourcengruppe oder das Abonnement benötigt, in der Sie Batchkonten verwalten. Allgemeine integrierte Rollen sind Contributor, Azure Batch Account Contributor und Reader.

Schritte finden Sie unter Assign Azure Rollen mithilfe des Azure Portals.

Authentifizieren mit der Azure Identitätsbibliothek

Mit Azure.Identity und Azure.ResourceManager.Batch müssen Sie Microsoft Entra-Endpunkte, Ressourcen-URIs oder Umleitungs-URIs nicht manuell angeben – die Anmeldeinformation übernimmt die Tokenbeschaffung, die Zwischenspeicherung und die Aktualisierung automatisch.

  1. Installieren Sie die erforderlichen NuGet-Pakete:

    dotnet add package Azure.Identity
    dotnet add package Azure.ResourceManager.Batch
    
  2. Fügen Sie die folgenden using Anweisungen Ihrem Code hinzu:

    using Azure.Identity;
    using Azure.ResourceManager;
    using Azure.ResourceManager.Batch;
    
  3. Erstellen Sie eine Anmeldeinformation und übergeben Sie sie an ArmClient. Verwenden Sie den Client zum Aufzählen oder Verwalten von Batchkonten.

    Empfohlen: DefaultAzureCredential — funktioniert lokal mit Anmeldungen über Entwicklertools (Azure CLI, Visual Studio, Visual Studio Code) und verwendet automatisch die verwaltete Identität, wenn die App in Azure ausgeführt wird:

    ArmClient arm = new ArmClient(new DefaultAzureCredential());
    
    SubscriptionResource subscription = await arm.GetDefaultSubscriptionAsync();
    await foreach (BatchAccountResource account in subscription.GetBatchAccountsAsync())
    {
        Console.WriteLine(account.Data.Name);
    }
    

    Interaktive (integrierte) Anmeldung – fordert einen Benutzer auf, sich über den Systembrowser anzumelden. Verwenden Sie diese Vorgehensweise, wenn Ihre App einen bestimmten Benutzer interaktiv authentifizieren muss:

    var credential = new InteractiveBrowserCredential(
        new InteractiveBrowserCredentialOptions
        {
            TenantId = "<tenant-id>",
            ClientId = "<application-id>",      // optional; required only if you registered your own app
            RedirectUri = new Uri("http://localhost")
        });
    
    ArmClient arm = new ArmClient(credential);
    

    Dienstprinzipal (geheimer Clientschlüssel) – Verwendung für unbeaufsichtigte Apps, die sich mit einem Geheimschlüssel für die App-Registrierung authentifizieren:

    var credential = new ClientSecretCredential(
        tenantId: "<tenant-id>",
        clientId: "<application-id>",
        clientSecret: "<client-secret>");
    
    ArmClient arm = new ArmClient(credential);
    

    Managed Identity – Wird verwendet, wenn Ihre App auf einer Azure Ressource (z. B. einer VM, app Service oder Container-App) ausgeführt wird, die über eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität verfügt:

    // System-assigned managed identity
    var credential = new ManagedIdentityCredential();
    
    // Or, user-assigned managed identity
    // var credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>");
    
    ArmClient arm = new ArmClient(credential);
    

Die Anmeldeinformation speichert Token transparent zwischen und aktualisiert sie, sodass Sie ArmClient und Batchverwaltungsressourcen während der gesamten Lebensdauer Ihrer App aktiv halten können.

Nächste Schritte