構成ファイルを使用して Microsoft Entra 資格情報の種類を作成する
Microsoft.Extensions.Azure
ライブラリでは、appsettings.json およびその他の構成ファイルで定義されているキーと値のペアから異なる Azure.Core.TokenCredential の種類を作成できます。 資格情報の種類は、Azure ID クライアント ライブラリ内の資格情報クラスのサブセットに対応します。 この記事では、さまざまな TokenCredential
の種類のサポートと、各種類に必要なキーと値のペアを構成する方法について説明します。
構成による Azure 資格情報のサポート
Microsoft.Extensions.Azure
ライブラリでは、.NET の IConfiguration
抽象化を使用して資格情報の値を appsettings.json またはその他の構成ファイルで検索することで、Azure サービス クライアントに TokenCredential
クラスを自動的に提供できます。 この方法を使用すると、開発者はアプリ コードを直接使用するのではなく、構成を使って異なる環境間で資格情報の値を明示的に設定できます。
構成では、次の資格情報の種類がサポートされています。
- 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 テナントのトークンを資格情報で取得できるようにします。 テナント 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
clientCertificateStoreLocation
と additionallyAllowedTenants
のキーと値のペアは省略可能です。 キーが存在し、値が空の場合は無視されます。 clientCertificateStoreLocation
が指定されていない場合は、既定の CurrentUser
が X509Credentials.StoreLocation 列挙型から使用されます。
DefaultAzureCredential
の種類を作成する
appsettings.json ファイルに次のキーと値のペアを追加して、Azure.Identity.DefaultAzureCredential を作成します。
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}
.NET