Condividi tramite


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:

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

Specificare un'identità gestita assegnata dall'utente tramite un ID client:

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

In alternativa, specificare un'identità gestita assegnata dall'utente tramite un ID risorsa:

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

L'ID risorsa ha il formato /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

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>"
}