Creare tipi di credenziali di Microsoft Entra usando i file di configurazione
La libreria Microsoft.Extensions.Azure
supporta la creazione di tipi diversi Azure.Core.TokenCredential da coppie chiave-valore definite in appsettings.json e altri file di configurazione. I tipi di credenziali corrispondono a un subset delle classi di credenziali nella libreria client di Identità di Azure. Questo articolo descrive il supporto per tipi TokenCredential
diversi e come configurare le coppie chiave-valore necessarie per ogni tipo.
Supporto per le credenziali di Azure tramite la configurazione
La libreria Microsoft.Extensions.Azure
può fornire automaticamente ai client del servizio di Azure una classe TokenCredential
cercando appsettings.json o altri file di configurazione per i valori delle credenziali usando l'astrazione IConfiguration
per .NET. Questo approccio consente agli sviluppatori di impostare in modo esplicito i valori delle credenziali in ambienti diversi tramite la configurazione anziché direttamente tramite il codice dell'app.
I tipi di credenziali seguenti sono supportati tramite la configurazione:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
Configurare credenziali Azure
I client del servizio di Azure registrati con il metodo AddAzureClients vengono configurati automaticamente con un'istanza di DefaultAzureCredential
se non vengono fornite credenziali esplicite tramite il metodo di estensione WithCredential. È anche possibile eseguire l'override del valore globale DefaultAzureCredential
usando i valori delle credenziali dai file di configurazione durante la registrazione di un client per creare un tipo di credenziale specifico:
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");
});
File appsettings.json associato:
"Storage": {
"serviceUri": "<service_uri>",
"credential": "managedidentity",
"clientId": "<clientId>"
}
I tipi di credenziali seguenti supportano anche la proprietà AdditionallyAllowedTenants
, che specifica tenant aggiuntivi di Microsoft Entra oltre il tenant predefinito per cui le credenziali possono acquisire i token:
Aggiungere il valore jolly "*" per consentire alle credenziali di acquisire i token per qualsiasi tenant di Microsoft Entra a cui l'account connesso può accedere. Se non vengono specificati ID tenant, questa opzione non avrà alcun effetto sul metodo di autenticazione e le credenziali acquisiranno i token per qualsiasi tenant richiesto quando si usa tale metodo.
{
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Creare un tipo ManagedIdentityCredential
È possibile creare identità gestite assegnate dall'utente e assegnate dal sistema usando i valori di configurazione. Aggiungere le coppie chiave-valore seguenti al file appsettings.json per creare un'istanza di Azure.Identity.ManagedIdentityCredential.
Identità gestite assegnate dall'utente
Un'identità gestita assegnata dall'utente può essere usata fornendo un ID client, un ID risorsa o un ID oggetto:
ID client:
{ "credential": "managedidentity", "clientId": "<clientId>" }
ID risorsa:
{ "credential": "managedidentity", "managedIdentityResourceId": "<managedIdentityResourceId>" }
L'ID risorsa ha il formato
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
.ID oggetto:
{ "credential": "managedidentity", "managedIdentityObjectId": "<managedIdentityObjectId>" }
Importante
La
managedIdentityObjectId
proprietà JSON è supportata nelleMicrosoft.Extensions.Azure
versioni 1.8.0 e successive.
Identità gestite assegnate dal sistema
{
"credential": "managedidentity"
}
Creare un tipo WorkloadIdentityCredential
Aggiungere le coppie chiave-valore seguenti al file appsettings.json per creare un Azure.Identity.WorkloadIdentityCredential:
{
"credential": "workloadidentity",
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"tokenFilePath": "<tokenFilePath>"
}
Creare un tipo ClientSecretCredential
Aggiungere le coppie chiave-valore seguenti al file appsettings.json per creare un Azure.Identity.ClientSecretCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientSecret": "<clientSecret>"
}
Creare un tipo ClientCertificateCredential
Aggiungere le coppie chiave-valore seguenti al file appsettings.json per creare un Azure.Identity.ClientCertificateCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientCertificate": "<clientCertificate>",
"clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Nota
Le coppie chiave-valore clientCertificateStoreLocation
e additionallyAllowedTenants
sono facoltative. Se le chiavi sono presenti e hanno valori vuoti, vengono ignorate. Se non viene specificato alcun clientCertificateStoreLocation
, viene utilizzato CurrentUser
predefinito dall'enumerazione X509Credentials.StoreLocation.
Creare un tipo DefaultAzureCredential
Aggiungere le coppie chiave-valore seguenti al file appsettings.json per creare un Azure.Identity.DefaultAzureCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}