次の方法で共有


構成ファイルを使用して Microsoft Entra 資格情報の種類を作成する

Microsoft.Extensions.Azure ライブラリでは、appsettings.json およびその他の構成ファイルで定義されているキーと値のペアから異なる Azure.Core.TokenCredential の種類を作成できます。 資格情報の種類は、Azure ID クライアント ライブラリ内の資格情報クラスのサブセットに対応します。 この記事では、さまざまな TokenCredential の種類のサポートと、各種類に必要なキーと値のペアを構成する方法について説明します。

構成による Azure 資格情報のサポート

Microsoft.Extensions.Azure ライブラリでは、.NET の IConfiguration 抽象化を使用して資格情報の値を appsettings.json またはその他の構成ファイルで検索することで、Azure サービス クライアントに TokenCredential クラスを自動的に提供できます。 この方法を使用すると、開発者はアプリ コードを直接使用するのではなく、構成を使って異なる環境間で資格情報の値を明示的に設定できます。

構成では、次の資格情報の種類がサポートされています。

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 テナントのトークンを資格情報で取得できるようにします。 テナント ID が指定されていない場合、このオプションはその認証方法に影響せず、資格情報ではその方法を使用するときに要求されたテナントのトークンが取得されます。

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

ManagedIdentityCredential の種類を作成する

構成値を使用して、ユーザー割り当てとシステム割り当ての両方のマネージド ID を作成できます。 appsettings.json ファイルに次のキーと値のペアを追加して、Azure.Identity.ManagedIdentityCredential のインスタンスを作成します。

ユーザー割り当て済みマネージド ID

ユーザー割り当てマネージド ID は、クライアント ID、リソース ID、またはオブジェクト ID を指定することで使用できます。

  • クライアント ID:

    {
        "credential": "managedidentity",
        "clientId":  "<clientId>"
    }
    
  • [リソース ID]:

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

    リソース ID は /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName} 形式になります。

  • オブジェクト ID:

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

    重要

    managedIdentityObjectId JSON プロパティは、Microsoft.Extensions.Azure バージョン 1.8.0 以降でサポートされています。

システム割り当てのマネージド ID

{
    "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>"
}

Note

clientCertificateStoreLocationadditionallyAllowedTenants のキーと値のペアは省略可能です。 キーが存在し、値が空の場合は無視されます。 clientCertificateStoreLocation が指定されていない場合は、既定の CurrentUserX509Credentials.StoreLocation 列挙型から使用されます。

DefaultAzureCredential の種類を作成する

appsettings.json ファイルに次のキーと値のペアを追加して、Azure.Identity.DefaultAzureCredential を作成します。

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