このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
この記事では、Azure でホストされているアプリケーションの Microsoft Entra トークン認証が、Azure Identity ライブラリによってどのようにサポートされているかについて説明します。 このサポートは、この記事で説明する一連のTokenCredential
実装によって可能になります。
この記事に含まれるサブジェクトは次のとおりです。
Azure でホストされるアプリケーションに関連する認証の問題のトラブルシューティングについては、「Azure でホストされるアプリケーション認証のトラブルシューティング」を参照してください。
DefaultAzureCredential
は、デプロイ時に認証によく使用される資格情報と、開発環境での認証に使用される資格情報を組み合わせたものです。 詳細については、「DefaultAzureCredential の概要」を参照してください。
DefaultAzureCredential
は、DefaultAzureCredentialBuilder
のセッターまたは環境変数による一連の構成をサポートしています。
AZURE_CLIENT_ID
で定義されているように環境変数AZURE_CLIENT_SECRET
、AZURE_TENANT_ID
、および を設定することで、それらの値によって指定されたサービス プリンシパルとして認証するようにDefaultAzureCredential
が構成されます。.managedIdentityClientId(String)
の設定AZURE_CLIENT_ID
は、ユーザー割り当てマネージド ID として認証するように構成DefaultAzureCredential
しますが、空のままにすると、システム割り当てマネージド ID として認証するように構成されます。.tenantId(String)
の設定AZURE_TENANT_ID
は、共有トークン キャッシュまたは IntelliJ IDEA のいずれかの特定のテナントに対して認証するように構成DefaultAzureCredential
します。AZURE_USERNAME
を設定すると、DefaultAzureCredential
は、共有トークンキャッシュから対応するキャッシュされたトークンを選択するように構成されます。次の例では、次を使用してSecretClient
azure-security-keyvault-secrets クライアント ライブラリから認証する方法をDefaultAzureCredential
示します。
// Azure SDK client builders accept the credential as a parameter.SecretClient client = new SecretClientBuilder() .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net") .credential(new DefaultAzureCredentialBuilder().build()) .buildClient();
次の例は、ユーザー割り当てマネージド ID が構成された Azure リソースにデプロイされたSecretClient
を使用するazure-security-keyvault-secrets クライアントからDefaultAzureCredential
を認証することを示しています。
/** * DefaultAzureCredential uses the user-assigned managed identity with the specified client ID. */DefaultAzureCredential credential = new DefaultAzureCredentialBuilder() .managedIdentityClientId("<CLIENT_ID>") .build();// Azure SDK client builders accept the credential as a parameter.SecretClient client = new SecretClientBuilder() .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net") .credential(credential) .buildClient();
ManagedIdentityCredential は、Azure リソースのマネージド ID (システム割り当てまたはユーザー割り当て) を認証します。 そのため、マネージド ID をIDENTITY/MSI
サポートする Azure リソース内でアプリケーションが実行されている場合、IMDS
この資格情報はアプリケーションを認証し、シークレットレス認証エクスペリエンスを提供します。
詳細については、「Azure リソース用マネージド ID とは」を参照してください。
次の例では、システム割り当てマネージド ID またはユーザー割り当てマネージド ID が有効になっている Azure 上の仮想マシン、App Service、Functions アプリ、Cloud Shell、Service Fabric、Arc、または AKS 環境を使用してSecretClient
、azure-security-keyvault-secrets クライアント ライブラリから認証ManagedIdentityCredential
する方法を示します。
/** * Authenticate with a user-assigned managed identity. */ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder() .clientId("<CLIENT_ID>") // required only for user-assigned .build();// Azure SDK client builders accept the credential as a parameter.SecretClient client = new SecretClientBuilder() .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net") .credential(credential) .buildClient();
環境変数を使用してDefaultAzureCredential
とEnvironmentCredential
を構成できます。 認証の種類ごとに、特定の変数の値が必要です。
変数名 | 価値 |
---|---|
AZURE_CLIENT_ID | Microsoft Entra アプリケーションの ID。 |
AZURE_TENANT_ID | アプリケーションの Microsoft Entra テナントの ID。 |
AZURE_CLIENT_SECRET | アプリケーションのクライアント シークレットの 1 つ。 |
変数名 | 価値 |
---|---|
AZURE_CLIENT_ID | Microsoft Entra アプリケーションの ID。 |
AZURE_TENANT_ID | アプリケーションの Microsoft Entra テナントの ID。 |
AZURE_CLIENT_CERTIFICATE_PATH | (パスワード保護のない) 秘密キーを含む、PEM でエンコードされた証明書ファイルへのパス。 |
AZURE_CLIENT_CERTIFICATE_PASSWORD | (省略可能)証明書ファイルのパスワード (存在する場合)。 |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN | (省略可能)サブジェクト名/発行者ベースの認証をサポートするために、x5c ヘッダーで証明書チェーンを送信します。 |
変数名 | 価値 |
---|---|
AZURE_CLIENT_ID | Microsoft Entra アプリケーションの ID。 |
AZURE_TENANT_ID | アプリケーションの Microsoft Entra テナントの ID。 |
AZURE_USERNAME | ユーザー名 (通常は電子メール アドレス)。 |
AZURE_PASSWORD | 指定されたユーザー名に関連するパスワード。 |
構成はこの順序で試行されます。 たとえば、クライアント シークレットと証明書の値が両方存在する場合、クライアント シークレットが使用されます。
この記事では、Azure でホストされるアプリケーションの認証について説明しました。 この形式の認証は、Azure SDK for Java で可能な認証方法のうちの 1 つです。 次の記事では、他の方法について説明します。
Azure でホストされるアプリケーション認証に関連する問題に直面した場合は、「Azure がホストするアプリケーション認証のトラブルシューティング」を参照してください。
認証について習得した後、SDK によって提供されるログ機能の詳細について「Azure SDK for Java でログを構成する」を参照してください。
このページはお役に立ちましたか?
このページはお役に立ちましたか?