Udostępnij za pośrednictwem


Tworzenie typów poświadczeń entra firmy Microsoft przy użyciu plików konfiguracji

Biblioteka Microsoft.Extensions.Azure obsługuje tworzenie różnych Azure.Core.TokenCredential typów z par klucz-wartość zdefiniowanych w appsettings.json i innych plikach konfiguracji. Typy poświadczeń odpowiadają podzestawowi klas poświadczeń w bibliotece klienta tożsamości platformy Azure. W tym artykule opisano obsługę różnych TokenCredential typów i sposób konfigurowania wymaganych par klucz-wartość dla każdego typu.

Obsługa poświadczeń platformy Azure za pośrednictwem konfiguracji

Biblioteka Microsoft.Extensions.Azure może automatycznie udostępniać klientom usługi platformy Azure klasę TokenCredential , wyszukując appsettings.json lub inne pliki konfiguracji dla wartości poświadczeń przy użyciu IConfiguration abstrakcji dla platformy .NET. Takie podejście umożliwia deweloperom jawne ustawianie wartości poświadczeń w różnych środowiskach za pośrednictwem konfiguracji, a nie bezpośrednio za pośrednictwem kodu aplikacji.

Następujące typy poświadczeń są obsługiwane za pośrednictwem konfiguracji:

Konfigurowanie poświadczeń platformy Azure

Klienci usługi platformy Azure zarejestrowani w metodzie AddAzureClients są automatycznie konfigurowani przy użyciu wystąpienia DefaultAzureCredential , jeśli nie podano jawnych poświadczeń za pośrednictwem WithCredential metody rozszerzenia. Możesz również zastąpić globalny DefaultAzureCredential przy użyciu wartości poświadczeń z plików konfiguracji podczas rejestrowania klienta w celu utworzenia określonego typu poświadczeń:

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

Skojarzony plik appsettings.json :

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

Następujące typy poświadczeń obsługują AdditionallyAllowedTenants również właściwość , która określa dodatkowe dzierżawy firmy Microsoft Entra poza domyślną dzierżawą, dla której poświadczenia mogą uzyskiwać tokeny:

Dodaj wartość symbolu wieloznakowego "*", aby umożliwić poświadczeniu uzyskanie tokenów dla dowolnej dzierżawy firmy Microsoft Entra, do którego może uzyskiwać dostęp zalogowany konto. Jeśli nie określono żadnych identyfikatorów dzierżawy, ta opcja nie będzie miała wpływu na tę metodę uwierzytelniania, a poświadczenie uzyska tokeny dla dowolnej żądanej dzierżawy podczas korzystania z tej metody.

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

Tworzenie ManagedIdentityCredential typu

Tożsamości zarządzane przypisane przez użytkownika i przypisane przez system można tworzyć przy użyciu wartości konfiguracji. Dodaj następujące pary klucz-wartość do pliku appsettings.json , aby utworzyć wystąpienie klasy Azure.Identity.ManagedIdentityCredential.

Tożsamości zarządzane przypisane przez użytkownika

Tożsamość zarządzana przypisana przez użytkownika może być używana przez podanie identyfikatora klienta, identyfikatora zasobu lub identyfikatora obiektu:

  • Identyfikator klienta:

    {
        "credential": "managedidentity",
        "clientId":  "<clientId>"
    }
    
  • Identyfikator zasobu:

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

    Identyfikator zasobu ma postać /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

  • Identyfikator obiektu:

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

    Ważne

    Właściwość JSON jest obsługiwana managedIdentityObjectId w Microsoft.Extensions.Azure wersjach 1.8.0 i nowszych.

Tożsamości zarządzane przypisane przez system

{
    "credential": "managedidentity"
}

Tworzenie WorkloadIdentityCredential typu

Dodaj następujące pary klucz-wartość do pliku appsettings.json , aby utworzyć element Azure.Identity.WorkloadIdentityCredential:

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

Tworzenie ClientSecretCredential typu

Dodaj następujące pary klucz-wartość do pliku appsettings.json , aby utworzyć element Azure.Identity.ClientSecretCredential:

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

Tworzenie ClientCertificateCredential typu

Dodaj następujące pary klucz-wartość do pliku appsettings.json , aby utworzyć element Azure.Identity.ClientCertificateCredential:

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

Uwaga

Pary clientCertificateStoreLocation i additionallyAllowedTenants klucz-wartość są opcjonalne. Jeśli klucze są obecne i mają puste wartości, są ignorowane. Jeśli nie clientCertificateStoreLocation zostanie określony, zostanie użyta wartość domyślna CurrentUser z wyliczenia X509Credentials.StoreLocation .

Tworzenie DefaultAzureCredential typu

Dodaj następujące pary klucz-wartość do pliku appsettings.json , aby utworzyć element Azure.Identity.DefaultAzureCredential:

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