Java と Azure ID を使用した Azure 認証

この記事では、Azure SDK for Java での Microsoft Entra トークン認証サポートを可能にする Java Azure Identity ライブラリの概要について説明します。 このライブラリには、Microsoft Entra トークン認証をサポートする Azure SDK クライアントを構築するために使用できる TokenCredential 実装のセットが用意されています。

Azure Identity ライブラリの現在のサポート内容を以下に示します。

これらのリンクをクリックすると、各認証方式の詳細を参照できます。 この記事の残りの部分では、よく使われる DefaultAzureCredential と関連トピックについて説明します。

Maven の依存関係を追加する

Maven の依存関係を追加するには、プロジェクトの pom.xml ファイルに次の XML を含めます。 [Azure Identity ライブラリ] ページ で示すように、最新の安定したリリース バージョン番号で {version_number} を置き換えます。

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>{version_number}</version>
</dependency>

主要な概念

Azure Identity ライブラリを理解する上での主要概念として、資格情報の概念と、その資格情報の最も一般的な実装である DefaultAzureCredential の 2 つがあります。

資格情報はクラスの一種であり、サービス クライアントが要求を認証するために必要なデータを格納、または取得できます。 Azure SDK のサービス クライアントは、その作成時に資格情報を受け取り、これらの資格情報を使用してサービス要求の認証を行います。

Azure Identity ライブラリは、Microsoft Entra ID を使用した OAuth 認証に焦点を置いており、サービス要求を認証するための Microsoft Entra トークンを取得できるさまざまな資格情報クラスを提供します。 このライブラリ内のすべての資格情報クラスは azure-coreTokenCredential 抽象クラスの実装です。これらはいずれも、TokenCredential で認証できるサービス クライアントの作成に使用できます。

DefaultAzureCredential は、アプリケーションを最終的に Azure Cloud で実行することを目的とするほとんどのシナリオに適しています。 DefaultAzureCredential は、デプロイ時に認証によく使用される資格情報と、開発環境での認証に使用される資格情報を組み合わせたものです。 DefaultAzureCredential を使用した例などの詳細については、「Azure でホストされている Java アプリケーションの認証」の「既定の Azure 資格情報」セクションを参照してください。

Azure SDK for Java を使用する」で説明しているように、管理ライブラリには若干の違いがあります。 こうした違いの例として、Azure サービスを使用するためのライブラリがクライアント ライブラリと呼ばれるのに対し、Azure サービスを管理するためのライブラリは管理ライブラリと呼ばれます。 以下のセクションでは、クライアントと管理の両ライブラリにおける認証の概要について説明します。

Azure クライアント ライブラリの認証

次の例では、azure-security-keyvault-secrets クライアント ライブラリの SecretClient を、DefaultAzureCredential を使用して認証する場合を示しています。

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Azure 管理ライブラリの認証

Azure 管理ライブラリでは Azure クライアント ライブラリと同じ資格情報 API を使用しますが、そのサブスクリプションの Azure リソースを管理するための Azure サブスクリプション ID も必要になります。

サブスクリプション ID は、Azure portal の [サブスクリプション] ページにあります。 または、次の Azure CLI コマンドを使ってサブスクリプション ID を取得します。

az account list --output table

サブスクリプション ID は AZURE_SUBSCRIPTION_ID 環境変数で設定できます。 AzureProfile は、次の例で示されている Manager インスタンスの作成中にデフォルトのサブスクリプション ID として、この ID を取得します。

AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
        new DefaultAzureCredentialBuilder().build(),
        new AzureProfile(AzureEnvironment.AZURE))
    .withDefaultSubscription();

この例で使用されている DefaultAzureCredential は、DefaultAzureCredential を使用して AzureResourceManager インスタンスを認証します。 Azure Identity ライブラリに用意されている他のトークン資格情報の実装を、DefaultAzureCredential の代わりに使用することもできます。

トラブルシューティング

ガイダンスについては、「Azure Identity Authentication の問題のトラブルシューティング」を参照してください。

次のステップ

この記事では、Azure SDK for Java で使用できる Azure Identity 機能について紹介しました。 DefaultAzureCredential は一般的であり、多くの場合に適しています。 次の記事では、Azure Identity ライブラリを使用した他の認証方法について説明するとともに、DefaultAzureCredential についてより詳しく説明します。