使用組態檔建立 Microsoft Entra 認證類型
Microsoft.Extensions.Azure
程式庫支援從 appsettings.json 和其他組態檔中所定義機碼/值組建立不同類型的 Azure.Core.TokenCredential。 認證類型會對應至 Azure 身分識別客戶端程式庫中認證類別的子集。 本文說明對不同 TokenCredential
類型的支援,以及如何為每個類型設定必要的機碼/值組。
透過組態支援 Azure 認證
Microsoft.Extensions.Azure
程式庫可以使用 .NET 的 IConfiguration
抽象概念搜尋 appsettings.json 或其他組態檔,以自動提供具有 TokenCredential
類別的 Azure 服務用戶端。 這種方法可讓開發人員透過組態,而不是直接透過應用程式程式碼,跨不同環境明確設定認證值。
透過組態支援下列認證類型:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
設定 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>"
}
注意
clientCertificateStoreLocation
和 additionallyAllowedTenants
機碼/值組是選擇性的。 如果機碼存在且具有空值,則系統會忽略它們。 如果 clientCertificateStoreLocation
未指定,則會使用 X509Credentials.StoreLocation 列舉中的預設值 CurrentUser
。
建立 DefaultAzureCredential
類型
將下列機碼/值組新增至您的 appsettings.json 檔案,以建立 Azure.Identity.DefaultAzureCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}