Bagikan melalui


Membuat jenis kredensial Microsoft Entra menggunakan file konfigurasi

Pustaka Microsoft.Extensions.Azure mendukung pembuatan berbagai Azure.Core.TokenCredential jenis dari pasangan kunci-nilai yang ditentukan dalam appsettings.json dan file konfigurasi lainnya. Jenis kredensial sesuai dengan subset 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 Pustaka dapat secara otomatis menyediakan kelas kepada klien layanan Azure dengan TokenCredential mencari appsettings.json atau file konfigurasi lainnya untuk nilai kredensial menggunakan IConfiguration abstraksi untuk .NET. Pendekatan ini memungkinkan pengembang untuk secara eksplisit mengatur nilai kredensial di berbagai lingkungan melalui konfigurasi daripada melalui kode aplikasi secara langsung.

Jenis kredensial berikut didukung 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 jenis kredensial tertentu:

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

File appsettings.json terkait:

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

Jenis kredensial berikut ini juga mendukung AdditionallyAllowedTenants properti , yang menentukan penyewa Microsoft Entra tambahan di luar penyewa default yang kredensialnya dapat memperoleh token:

Tambahkan nilai kartubebas "*" untuk memungkinkan kredensial memperoleh token untuk penyewa Microsoft Entra apa pun yang dapat diakses akun yang masuk. Jika tidak ada ID penyewa yang ditentukan, opsi ini tidak akan 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 ManagedIdentityCredential jenis

Anda dapat membuat identitas terkelola yang ditetapkan pengguna dan ditetapkan sistem menggunakan nilai konfigurasi. Tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda untuk membuat instans Azure.Identity.ManagedIdentityCredential.

Identitas terkelola yang ditetapkan pengguna

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

  • ID Klien:

    {
        "credential": "managedidentity",
        "clientId":  "<clientId>"
    }
    
  • ID Sumber Daya:

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

    ID sumber daya mengambil formulir /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

  • ID Objek:

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

    Penting

    Properti managedIdentityObjectId JSON didukung dalam Microsoft.Extensions.Azure versi 1.8.0 dan yang lebih baru.

Identitas terkelola yang ditetapkan sistem

{
    "credential": "managedidentity"
}

Membuat WorkloadIdentityCredential jenis

Tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda untuk membuat Azure.Identity.WorkloadIdentityCredential:

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

Membuat ClientSecretCredential jenis

Tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda untuk membuat Azure.Identity.ClientSecretCredential:

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

Membuat ClientCertificateCredential jenis

Tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda untuk membuat Azure.Identity.ClientCertificateCredential:

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

Catatan

clientCertificateStoreLocation Pasangan kunci-nilai dan additionallyAllowedTenants bersifat opsional. Jika kunci ada dan memiliki nilai kosong, kunci akan diabaikan. Jika tidak clientCertificateStoreLocation ditentukan, default CurrentUser digunakan dari X509Credentials.StoreLocation enum.

Membuat DefaultAzureCredential jenis

Tambahkan pasangan kunci-nilai berikut ke file appsettings.json Anda untuk membuat Azure.Identity.DefaultAzureCredential:

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