Condividi tramite


Creare credenziali della libreria di identità di Azure tramite file di configurazione

L'integrazione della libreria client di Azure per ASP.NET Core (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. Le credenziali corrispondono a un subset delle classi di credenziali nella libreria client di Azure Identity. 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

Microsoft.Extensions.Azure può fornire automaticamente ai client del servizio di Azure una TokenCredential classe 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.

È possibile creare le credenziali seguenti 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 globale DefaultAzureCredential usando i valori delle credenziali dai file di configurazione durante la registrazione di un client per creare credenziali specifiche:

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

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

File appsettings.json associato:

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

Le seguenti credenziali supportano anche la proprietà AdditionallyAllowedTenants che specifica i tenant di Microsoft Entra oltre il tenant predefinito per cui le credenziali sono in grado di acquisire token:

Aggiungere il valore wildcard * 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 ha alcun effetto su tale 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'istanza di ManagedIdentityCredential

È possibile configurare una credenziale per usare un'identità gestita nei modi seguenti usando i valori di configurazione:

  • Identità gestita assegnata dal sistema
  • Identità gestita assegnata dall'utente
  • Identità gestita come credenziale di identità federata

Per creare un'istanza di Azure.Identity.ManagedIdentityCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json .

Identità gestita assegnata dal sistema

{
    "credential": "managedidentity"
}

Identità gestita assegnata dall'utente

Un'identità gestita assegnata dall'utente può essere usata fornendo un ID client, un ID risorsa o un ID oggetto.

{
    "credential": "managedidentity",
    "managedIdentityClientId": "<managed_identity_client_id>"
}

Identità gestita come credenziale di identità federata

L'identità gestita come caratteristica delle credenziali delle identità federate è supportata nelle Microsoft.Extensions.Azure versioni 1.12.0 e successive. La funzionalità non funziona con l'identità gestita assegnata dal sistema. Le credenziali possono essere configurate con un'identità gestita assegnata dall'utente fornendo un ID client, un ID risorsa o un ID oggetto.

{
    "credential": "managedidentityasfederatedidentity",
    "azureCloud": "<azure_cloud>",
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "managedIdentityClientId": "<managed_identity_client_id>"
}

Il valore della azureCloud chiave viene usato per impostare l'ambito del token di accesso di Microsoft Entra. Può essere uno dei valori seguenti:

  • public per il cloud pubblico di Azure
  • usgov per Azure Cloud del Governo degli Stati Uniti
  • china per Azure gestito da 21Vianet

Creare un'istanza di AzurePipelinesCredential

Per creare un'istanza di Azure.Identity.AzurePipelinesCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json :

{
    "credential": "azurepipelines",
    "clientId": "<client_id>",
    "tenantId": "<tenant_id>",
    "serviceConnectionId": "<service_connection_id>",
    "systemAccessToken": "<system_access_token>"
}

Importante

AzurePipelinesCredential è supportato nelle Microsoft.Extensions.Azure versioni 1.11.0 e successive.

Creare un'istanza di WorkloadIdentityCredential

Per creare un'istanza di Azure.Identity.WorkloadIdentityCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json :

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

Creare un'istanza di ClientSecretCredential

Per creare un'istanza di Azure.Identity.ClientSecretCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "clientSecret": "<client_secret>"
}

Creare un'istanza di ClientCertificateCredential

Per creare un'istanza di Azure.Identity.ClientCertificateCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "clientCertificate": "<client_certificate>",
    "clientCertificateStoreLocation": "<client_certificate_store_location>"
}

Nota

La clientCertificateStoreLocation chiave è facoltativa. Se la chiave:

  • È presente e ha un valore vuoto, viene ignorato.
  • Non presente, viene utilizzato il valore predefinito CurrentUser dall'enum X509Credentials.StoreLocation.

Creare un'istanza di DefaultAzureCredential

Per creare un'istanza di Azure.Identity.DefaultAzureCredential, aggiungere le coppie chiave-valore seguenti al file appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "managedIdentityResourceId": "<managed_identity_resource_id>"
}