共用方式為


使用組態檔建立 Microsoft Entra 認證類型

Microsoft.Extensions.Azure 程式庫支援從 appsettings.json 和其他組態檔中所定義機碼/值組建立不同類型的 Azure.Core.TokenCredential。 認證類型會對應至 Azure 身分識別客戶端程式庫中認證類別的子集。 本文說明對不同 TokenCredential 類型的支援,以及如何為每個類型設定必要的機碼/值組。

透過組態支援 Azure 認證

Microsoft.Extensions.Azure 程式庫可以使用 .NET 的 IConfiguration 抽象概念搜尋 appsettings.json 或其他組態檔,以自動提供具有 TokenCredential 類別的 Azure 服務用戶端。 這種方法可讓開發人員透過組態,而不是直接透過應用程式程式碼,跨不同環境明確設定認證值。

透過組態支援下列認證類型:

設定 Azure 認證

使用 AddAzureClients 方法註冊的 Azure 服務用戶端,若未透過 WithCredential 擴充方法提供明確認證,則會自動使用 DefaultAzureCredential 的執行個體進行設定。 註冊用戶端以建立特定認證類型時,您也可以使用組態檔中的認證值覆寫全域 DefaultAzureCredential

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

相關聯的 appsettings.json 檔案:

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

下列認證類型也支援 AdditionallyAllowedTenants 屬性,其會指定認證可能取得權杖所在預設租用戶以外的其他 Microsoft Entra 租用戶:

新增萬用字元值「*」以允許認證取得登入帳戶可存取之任何 Microsoft Entra 租用戶的權杖。 如果未指定任何租用戶識別碼,此選項將不會影響該驗證方法,且認證在使用該方法時會取得任何所要求租用戶的權杖。

{
    "additionallyAllowedTenants":  "<tenant-ids-separated-by-semicolon>"
}

建立 ManagedIdentityCredential 類型

您可以使用組態值來建立使用者指派和系統指派的受控識別。 將下列機碼/值組新增至 appsettings.json 檔案,以建立 Azure.Identity.ManagedIdentityCredential 的執行個體。

使用者指派的受控識別

提供用戶端識別碼、資源識別碼或物件識別碼,即可使用使用者指派的受控識別:

  • 用戶端識別碼

    {
        "credential": "managedidentity",
        "clientId":  "<clientId>"
    }
    
  • 資源識別碼:

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

    資源識別碼格式為 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}

  • 物件識別碼

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

    重要

    managedIdentityObjectId 1.8.0 版和更新版本支援 Microsoft.Extensions.Azure JSON 屬性。

系統指派的受控識別

{
    "credential": "managedidentity"
}

建立 WorkloadIdentityCredential 類型

將下列機碼/值組新增至您的 appsettings.json 檔案,以建立 Azure.Identity.WorkloadIdentityCredential

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

建立 ClientSecretCredential 類型

將下列機碼/值組新增至您的 appsettings.json 檔案,以建立 Azure.Identity.ClientSecretCredential

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientSecret": "<clientSecret>"
}

建立 ClientCertificateCredential 類型

將下列機碼/值組新增至您的 appsettings.json 檔案,以建立 Azure.Identity.ClientCertificateCredential

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientCertificate": "<clientCertificate>",
    "clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
    "additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}

注意

clientCertificateStoreLocationadditionallyAllowedTenants 機碼/值組是選擇性的。 如果機碼存在且具有空值,則系統會忽略它們。 如果 clientCertificateStoreLocation 未指定,則會使用 X509Credentials.StoreLocation 列舉中的預設值 CurrentUser

建立 DefaultAzureCredential 類型

將下列機碼/值組新增至您的 appsettings.json 檔案,以建立 Azure.Identity.DefaultAzureCredential

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "managedIdentityResourceId": "<managedIdentityResourceId>"
}