Bagikan melalui


Membuat kredensial pustaka Azure Identity melalui file konfigurasi

Integrasi pustaka klien Azure untuk ASP.NET Core (Microsoft.Extensions.Azure) mendukung pembuatan berbagai Azure.Core.TokenCredential jenis dari pasangan kunci-nilai yang ditentukan dalam appsettings.json dan file konfigurasi lainnya. Kredensial sesuai dengan suatu subset dari kelas kredensial di pustaka klien Azure Identity. Artikel ini menjelaskan dukungan untuk berbagai TokenCredential jenis dan cara mengonfigurasi pasangan kunci-nilai yang diperlukan untuk setiap jenis.

Dukungan untuk kredensial Azure melalui konfigurasi

Microsoft.Extensions.Azure dapat menyediakan klien layanan Azure secara otomatis dengan kelas TokenCredential dengan mencari appsettings.json atau file konfigurasi lainnya untuk nilai kredensial menggunakan abstraksi IConfiguration untuk .NET. Pendekatan ini memungkinkan pengembang untuk secara eksplisit mengatur nilai kredensial di berbagai lingkungan melalui konfigurasi daripada melalui kode aplikasi secara langsung.

Kredensial berikut dapat dibuat melalui konfigurasi:

Mengonfigurasi kredensial Azure

Klien layanan Azure yang terdaftar dengan AddAzureClients metode secara otomatis dikonfigurasi dengan instans DefaultAzureCredential jika tidak ada kredensial eksplisit yang disediakan melalui WithCredential metode ekstensi. Anda juga dapat mengambil alih global DefaultAzureCredential menggunakan nilai kredensial dari file konfigurasi saat mendaftarkan klien untuk membuat kredensial tertentu:

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 terkait:

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

Kredensial berikut ini juga mendukung properti AdditionallyAllowedTenants, yang menetapkan tenant Microsoft Entra selain tenant default yang kredensialnya dapat memperoleh token.

Tambahkan nilai wildcard * untuk memungkinkan kredensial mendapatkan token untuk penyewa mana pun dari Microsoft Entra yang dapat diakses oleh akun yang masuk. Jika tidak ada ID penyewa yang ditentukan, opsi ini tidak berpengaruh pada metode autentikasi tersebut, dan kredensial akan memperoleh token untuk penyewa yang diminta saat menggunakan metode tersebut.

{
    "additionallyAllowedTenants": "<tenant_ids_separated_by_semicolon>"
}

Membuat instans ManagedIdentityCredential

Anda dapat mengonfigurasi kredensial untuk menggunakan identitas terkelola dengan cara berikut menggunakan nilai konfigurasi:

  • Identitas terkelola yang diberikan oleh sistem
  • Identitas terkelola yang ditetapkan pengguna
  • Identitas terkelola sebagai kredensial identitas terfederasi

Untuk membuat instans Azure.Identity.ManagedIdentityCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda.

Identitas terkelola yang diberikan oleh sistem

{
    "credential": "managedidentity"
}

Identitas terkelola yang ditetapkan pengguna

Identitas terkelola yang ditetapkan pengguna dapat digunakan dengan memberikan ID klien, ID sumber daya, atau ID objek.

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

Identitas terkelola sebagai kredensial identitas terfederasi

Identitas terkelola sebagai kredensial identitas federasi didukung dalam Microsoft.Extensions.Azure versi 1.12.0 dan yang terbaru. Fitur ini tidak berfungsi dengan identitas terkelola yang ditetapkan sistem. Kredensial dapat dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dengan memberikan ID klien, ID sumber daya, atau ID objek.

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

Nilai azureCloud kunci digunakan untuk mengatur cakupan token akses Microsoft Entra. Ini bisa menjadi salah satu nilai berikut:

  • public untuk Azure Public Cloud
  • usgov untuk Azure US Government Cloud
  • china untuk Azure yang dioperasikan oleh 21Vianet

Membuat instans AzurePipelinesCredential

Untuk membuat instans Azure.Identity.AzurePipelinesCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda:

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

Penting

AzurePipelinesCredential didukung dalam Microsoft.Extensions.Azure versi 1.11.0 dan yang lebih baru.

Membuat instans WorkloadIdentityCredential

Untuk membuat instans Azure.Identity.WorkloadIdentityCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda:

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

Membuat instans ClientSecretCredential

Untuk membuat instans Azure.Identity.ClientSecretCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda:

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

Membuat instans ClientCertificateCredential

Untuk membuat instans Azure.Identity.ClientCertificateCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda:

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

Catatan

Kuncinya clientCertificateStoreLocation bersifat opsional. Jika kunci:

  • Ada dan memiliki nilai kosong, nilai tersebut diabaikan.
  • Tidak tersedia, default CurrentUser digunakan dari enum X509Credentials.StoreLocation.

Membuat instans DefaultAzureCredential

Untuk membuat instans Azure.Identity.DefaultAzureCredential, tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda:

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