Freigeben über


Erstellen von Microsoft Entra-Anmeldeinformationstypen mithilfe von Konfigurationsdateien

Die Microsoft.Extensions.Azure-Bibliothek unterstützt das Erstellen verschiedener Azure.Core.TokenCredential-Typen von Schlüsselwertpaaren, die in appsettings.json und anderen Konfigurationsdateien definiert sind. Die Anmeldeinformationstypen entsprechen einer Teilmenge der Anmeldeinformationsklassen in der Azure Identity-Clientbibliothek. In diesem Artikel werden die Unterstützung für verschiedene TokenCredential-Typen und die Konfiguration der erforderlichen Schlüsselwertpaare für jeden Typ beschrieben.

Unterstützung für Azure-Anmeldeinformationen durch Konfiguration

Die Microsoft.Extensions.Azure-Bibliothek kann Azure-Dienstclients automatisch mit einer TokenCredential-Klasse bereitstellen, indem appsettings.json oder andere Konfigurationsdateien nach Anmeldeinformationswerten mithilfe der IConfiguration-Abstraktion für .NET durchsucht wird. Mit diesem Ansatz können Entwickler Anmeldeinformationswerte in verschiedenen Umgebungen explizit über die Konfiguration anstatt direkt über App-Code festlegen.

Die folgenden Anmeldeinformationstypen werden über die Konfiguration unterstützt:

Konfigurieren von Anmeldeinformationen

Azure-Dienstclients, die mit der AddAzureClients-Methode registriert sind, werden automatisch mit einer Instanz von DefaultAzureCredential konfiguriert, bei der keine expliziten Anmeldeinformationen über die WithCredential-Erweiterungsmethode bereitgestellt werden. Sie können das globale DefaultAzureCredential auch mithilfe von Anmeldeinformationswerten aus Konfigurationsdateien überschreiben, wenn Sie einen Client registrieren, um einen bestimmten Anmeldeinformationstyp zu erstellen:

builder.Services.AddAzureClients(clientBuilder =>
{
    // Register BlobServiceClient using credentials from appsettings.json
    clientBuilder.AddBlobServiceClient(builder.Configuration.GetSection("Storage"));

    // Register ServiceBusClient using the fallback DefaultAzureCredential credentials
    clientBuilder.AddServiceBusClientWithNamespace(
        "<your_namespace>.servicebus.windows.net");
});

Die zugeordnete appsettings.json Datei:

"Storage": {
    "serviceUri": "<service_uri>",
    "credential": "managedidentity",
    "clientId":  "<clientId>"
}

Die folgenden Anmeldeinformationstypen unterstützen auch die AdditionallyAllowedTenants-Eigenschaft, die zusätzliche Microsoft Entra-Mandanten über den Standardmandanten hinaus angibt, für den die Anmeldeinformationen Token erwerben können:

Fügen Sie den Platzhalterwert „*“ hinzu, damit die Anmeldeinformationen Token für jeden Microsoft Entra-Mandanten abrufen können, auf den das angemeldete Konto zugreifen kann. Wenn keine Mandanten-IDs angegeben werden, wirkt sich diese Option nicht auf diese Authentifizierungsmethode aus, und die Anmeldeinformationen erwerben Token für jeden angeforderten Mandanten bei Verwendung dieser Methode.

{
    "additionallyAllowedTenants":  "<tenant-ids-separated-by-semicolon>"
}

Erstellen eines ManagedIdentityCredential-Typs

Sie können mithilfe von Konfigurationswerten sowohl vom Benutzer zugewiesene als auch vom System zugewiesene verwaltete Identitäten erstellen. Fügen Sie der appsettings.json-Datei die folgenden Schlüssel-Wert-Paare hinzu, um eine Instanz von Azure.Identity.ManagedIdentityCredential zu erstellen.

Vom Benutzer zugewiesene verwaltete Identitäten

Geben Sie eine vom Benutzer zugewiesene verwaltete Identität über eine Client-ID an:

{
    "credential": "managedidentity",
    "clientId":  "<clientId>"
}

Alternativ können Sie eine vom Benutzer zugewiesene verwaltete Identität über eine Ressourcen-ID angeben:

{
    "credential": "managedidentity",
    "managedIdentityResourceId":  "<managedIdentityResourceId>"
}

Die Ressourcen-ID übernimmt die Form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

Vom System zugewiesene verwaltete Identitäten

{
    "credential": "managedidentity"
}

Erstellen eines WorkloadIdentityCredential-Typs

Fügen Sie der appsettings.json-Datei die folgenden Schlüssel-Wert-Paare hinzu, um ein Azure.Identity.WorkloadIdentityCredential zu erstellen:

{
    "credential": "workloadidentity",
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "tokenFilePath": "<tokenFilePath>"
}

Erstellen eines ClientSecretCredential-Typs

Fügen Sie der appsettings.json-Datei die folgenden Schlüssel-Wert-Paare hinzu, um ein Azure.Identity.ClientSecretCredential zu erstellen:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientSecret": "<clientSecret>"
}

Erstellen eines ClientCertificateCredential-Typs

Fügen Sie der appsettings.json-Datei die folgenden Schlüssel-Wert-Paare hinzu, um ein Azure.Identity.ClientCertificateCredential zu erstellen:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientCertificate": "<clientCertificate>",
    "clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
    "additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}

Hinweis

Die Schlüssel-Wert-Paare clientCertificateStoreLocation und additionallyAllowedTenants sind optional. Wenn die Schlüssel vorhanden sind und leere Werte aufweisen, werden sie ignoriert. Wenn kein clientCertificateStoreLocation angegeben wird, wird das Standard-CurrentUser aus der X509Credentials.StoreLocation-Enumeration verwendet.

Erstellen eines DefaultAzureCredential-Typs

Fügen Sie der appsettings.json-Datei die folgenden Schlüssel-Wert-Paare hinzu, um ein Azure.Identity.DefaultAzureCredential zu erstellen:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "managedIdentityResourceId": "<managedIdentityResourceId>"
}