MSAL4J でのサインインについて理解する

完了済み

MSAL4J は、アプリケーション構成をMicrosoft ID プラットフォーム認証 API とトークン取得 API に接続します。 このユニットでは、クライアント構築サンプルと、Web アプリケーションのサインイン フローにおけるライブラリの役割について説明します。

Java 用 Microsoft Authentication Library

Java 用 Microsoft Authentication Library (MSAL4J) を使用すると、アプリケーションはMicrosoft ID で認証し、保護された API のトークンを取得できます。 OAuth 2.0 と OpenID Connect を使用して、Microsoft Entra ID、個人用Microsoft アカウント、Azure AD B2C を含むシナリオをサポートします。

Note

既存の Azure AD B2C のお客様は、引き続きサービスを使用できます。 2025 年 5 月 1 日以降、新しい顧客による購入は行われず、サポートは少なくとも 2030 年 5 月まで継続されます。 Azure AD B2C P2 は、2026 年 3 月 15 日にすべての顧客に対して廃止されました。サービスサポートを継続しても、廃止された P2 のみの機能は含まれません。

新しい顧客 ID プロジェクトの場合は、Microsoft Entra 外部 IDを使用します。 このモジュールのシナリオは、Azure AD B2C テナントや外部 ID 外部テナントではなく、Microsoft Entraワークフォース テナントに関します。 詳細については、Azure AD B2C の販売終了に関する FAQ を参照してください。

MSAL4J では、Web アプリケーション、バックグラウンド サービス、コマンド ライン アプリケーション、デスクトップ アプリケーションなど、いくつかの種類のアプリケーションがサポートされています。 適切なクライアントの種類とトークン取得フローは、アプリケーションの環境によって異なります。

機密クライアントはサーバー アプリケーションを表します

MSAL は、セキュリティで保護された資格情報を使用して自身を認証できる機密クライアントと、アプリケーションの資格情報を確実に保持できない パブリッククライアントを区別します。 サーバー側Java Web アプリケーションは機密クライアントです。

次の例示フラグメントは、そのクライアントを構築します。 大文字は構成プレースホルダーであり、実際の識別子やシークレットではありません。 インポート、周囲のアプリケーション コード、例外処理は表示されません。

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();

フラグメントは、次の 3 つの入力を接続します。

Input Meaning
CLIENT_ID 登録からのアプリケーション識別子。
CLIENT_SECRET サーバーに提供されるシークレット マテリアルのプレースホルダー。 これは、シークレットを作成または埋め込む要求ではなく、1 つの資格情報ファクトリを示しています。
AUTHORITY ID プロバイダーの URL とサインイン対象ユーザー。 シングルテナント シナリオでは、選択したMicrosoft Entra テナントを識別します。

ClientCredentialFactory は資格情報オブジェクトを作成し、ビルダーはその資格情報をアプリケーションのクライアント ID と機関に関連付けます。 build()呼び出すと、MSAL クライアントが構築されます。ユーザーのサインインやブラウザーの送信は行われません。

承認コード フローにおける MSAL の役割

機密クライアントはアプリケーションを認証しますが、ブラウザーの操作ではユーザーを認証します。 アプリケーションは、フローの次の部分を調整します。

Phase MSAL API アプリケーションの責任
ブラウザーのサインインを開始する getAuthorizationRequestUrl 承認要求を作成し、ブラウザーをそれにリダイレクトします。
承認コードを使用する acquireToken と AuthorizationCodeParameters コールバックを処理し、応答を検証し、受信したコードをトークンと交換します。
後の API 呼び出しのトークンを取得する acquireTokenSilently と SilentParameters アカウントと適切なトークン キャッシュ コンテキストを指定し、ユーザーの操作を必要とするケースを処理します。

この Web アプリケーションの場合、コールバックは、Microsoft Graph アクセス トークンではなく、承認コードを受け取ります。 コードの引き換えは、トークン エンドポイントへのサーバー間要求によって行われます。

認証結果を解釈する

コードの引き換えが成功すると、 IAuthenticationResultが返されます。 この OpenID Connect シナリオでは、結果によってアプリケーションの ID トークンと、要求された API のアクセス トークンが提供されます。 また、アカウントとトークンの有効期間の管理に使用される情報も提供します。

ID トークンには ID 要求が含まれています。アクセス トークンにより、目的の API への要求が有効になります。 ID トークンは、Microsoft Graph アクセス トークンに代わるものではありません。 MSAL4J はトークンを取得しますが、アプリケーションまたは API 固有の SDK が後続のビジネス API 呼び出しを行います。

次のユニットでは、注釈付きサーブレットコードを使用してこれらの責任に従います。 MSAL の概要では、サポートされているシナリオとトークン管理に関する追加のコンテキストが提供されます。