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:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
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
Eine vom Benutzer zugewiesene verwaltete Identität kann verwendet werden, indem eine Client-ID, Ressourcen-ID oder Objekt-ID bereitgestellt wird:
Client-ID:
{ "credential": "managedidentity", "clientId": "<clientId>" }
Ressourcen-ID:
{ "credential": "managedidentity", "managedIdentityResourceId": "<managedIdentityResourceId>" }
Die Ressourcen-ID übernimmt die Form
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
.Objekt-ID:
{ "credential": "managedidentity", "managedIdentityObjectId": "<managedIdentityObjectId>" }
Wichtig
Die
managedIdentityObjectId
JSON-Eigenschaft wird inMicrosoft.Extensions.Azure
Den Versionen 1.8.0 und höher unterstützt.
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>"
}