Skapa autentiseringsuppgifter för Azure Identity-bibliotek via konfigurationsfiler

Integreringen av Azure-klientbiblioteket för ASP.NET Core (Microsoft.Extensions.Azure) har stöd för att skapa olika Azure.Core.TokenCredential typer från nyckel/värde-par som definierats i appsettings.json och andra konfigurationsfiler. Autentiseringsuppgifterna motsvarar en delmängd av autentiseringsklasserna i Azure Identity-klientbiblioteket. I den här artikeln beskrivs stöd för olika TokenCredential typer och hur du konfigurerar nödvändiga nyckel/värde-par för varje typ.

Stöd för Azure-autentiseringsuppgifter via konfiguration

Microsoft.Extensions.Azure kan automatiskt ge Azure-tjänstklienter en TokenCredential klass genom att sökaappsettings.json eller andra konfigurationsfiler efter autentiseringsvärden med hjälp av abstraktionen IConfiguration för .NET. Med den här metoden kan utvecklare uttryckligen ange värden för autentiseringsuppgifter i olika miljöer via konfiguration i stället för direkt via appkod.

Följande autentiseringsuppgifter kan skapas via konfiguration:

Konfigurera Azure-autentiseringsuppgifter

Azure-tjänstklienter AddAzureClients som registrerats med metoden konfigureras automatiskt med en instans av DefaultAzureCredential om inga explicita autentiseringsuppgifter tillhandahålls via WithCredential tilläggsmetoden. Du kan också åsidosätta det globala DefaultAzureCredential med hjälp av autentiseringsvärden från konfigurationsfiler när du registrerar en klient för att skapa en specifik autentiseringsuppgift:

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

Den associerade appsettings.json filen:

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

Följande autentiseringsuppgifter stöder också egenskapen AdditionallyAllowedTenants, som anger Microsoft Entra-klienter förutom standardklientorganisationen för vilka autentiseringsuppgifterna kan hämta tokens:

Lägg till jokertecknets värde * så att autentiseringsuppgifterna kan hämta token för alla Microsoft Entra-klientorganisationer som det inloggade kontot kan komma åt. Om inga hyresgäst-ID:n anges har det här alternativet ingen effekt på den autentiseringsmetoden, och autentiseringsuppgifterna hämtar tokens för alla begärda hyresgäster när den metoden används.

{
    "additionallyAllowedTenants": "<tenant_ids_separated_by_semicolon>"
}

Skapa en instans av ManagedIdentityCredential

Du kan konfigurera en autentiseringsuppgift för att använda en hanterad identitet på följande sätt med hjälp av konfigurationsvärden:

  • Systemtilldelad hanterad identitet
  • Användartilldelad hanterad identitet
  • Hanterad identitet som en federerad identitetsautentiseringsuppgift

Om du vill skapa en instans av Azure.Identity.ManagedIdentityCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil .

Systemtilldelad hanterad identitet

{
    "credential": "managedidentity"
}

Användartilldelad hanterad identitet

En användartilldelad hanterad identitet kan användas genom att ange ett klient-ID, resurs-ID eller objekt-ID.

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

Hanterad identitet som en federerad identitetsautentiseringsuppgift

Funktionen hanterad identitet som federerad identitetsautentisering stöds i Microsoft.Extensions.Azure version 1.12.0 och senare. Funktionen fungerar inte med systemtilldelad hanterad identitet. Autentiseringsuppgifterna kan konfigureras med en användartilldelad hanterad identitet genom att ange ett klient-ID, resurs-ID eller objekt-ID.

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

Nyckelvärdet azureCloud används för att ange omfånget för Microsoft Entra-åtkomsttoken. Det kan vara något av följande värden:

  • public för Azure Public Cloud
  • usgov för Azure US Government Cloud-tjänst
  • china för Azure som drivs av 21Vianet

Skapa en instans av AzurePipelinesCredential

Om du vill skapa en instans av Azure.Identity.AzurePipelinesCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil :

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

Viktigt!

AzurePipelinesCredential stöds i Microsoft.Extensions.Azure versionerna 1.11.0 och senare.

Skapa en instans av WorkloadIdentityCredential

Om du vill skapa en instans av Azure.Identity.WorkloadIdentityCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil :

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

Skapa en instans av ClientSecretCredential

Om du vill skapa en instans av Azure.Identity.ClientSecretCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil :

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

Skapa en instans av ClientCertificateCredential

Om du vill skapa en instans av Azure.Identity.ClientCertificateCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil :

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

Kommentar

Nyckeln clientCertificateStoreLocation är valfri. Om nyckeln:

  • Om det finns och har ett tomt värde, ignoreras det.
  • Om det inte är närvarande, används standardvärdet CurrentUser från X509Credentials.StoreLocation enum.

Skapa en instans av DefaultAzureCredential

Om du vill skapa en instans av Azure.Identity.DefaultAzureCredentiallägger du till följande nyckel/värde-par i dinappsettings.json-fil :

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