クイック スタート: Java Web アプリでユーザーのサインインと Microsoft Graph API の呼び出しを行う
このクイックスタートでは、Java Web アプリケーションでユーザーをサインインし、Microsoft Graph API を呼び出す方法を示すコード サンプルをダウンロードして実行します。 任意の Microsoft Entra 組織のユーザーは、アプリケーションにサインインできます。
図については、「このサンプルのしくみ」を参照してください。
前提条件
このサンプルを実行するには、以下が必要です。
- Java Development Kit (JDK) 8 以降。
- Maven。
クイック スタート アプリを登録してダウンロードする
ヒント
この記事の手順は、開始するポータルによって若干異なる場合があります。
クイックスタート アプリケーションを開始する方法としては、簡易 (オプション 1) と手動 (オプション 2) の 2 つがあります。
オプション 1: アプリを登録して自動構成を行った後、コード サンプルをダウンロードする
- クラウド アプリケーション管理者以上の権限で Microsoft Entra 管理センター - アプリの登録クイックスタート エクスペリエンスに移動します。
- アプリケーションの名前を入力し、 [登録] を選択します。
- ポータルのクイックスタート エクスペリエンスの案内に従って、自動的に構成されたアプリケーション コードをダウンロードします。
オプション 2:アプリケーションを登録し、アプリケーションとコード サンプルを手動で構成する
手順 1:アプリケーションの登録
アプリケーションを登録し、それにアプリの登録情報を手動で追加するには、次の手順を実行します。
- クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
- 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。
- [ID]>[アプリケーション]>[アプリの登録] に移動し、[新規登録] を選びます。
- 自分のアプリケーションの名前を入力します (例: java-webapp)。 アプリのユーザーには、この名前が表示されます。 これは後で変更できます。
- [登録] を選択します。
- [概要] ページのアプリケーション (クライアント) ID とディレクトリ (テナント) ID をメモします。 これらの値は後で必要になります。
- [管理] で、 [認証] を選択します。
- [プラットフォームの追加]>[Web] の順に選択します。
- [リダイレクト URI] セクションで、「
https://localhost:8443/msal4jsample/secure/aad
」と入力します。 - [構成] をクリックします。
- [Web] セクションの [リダイレクト URI] に、2 つ目のリダイレクト URI として「
https://localhost:8443/msal4jsample/graph/me
」と入力します。 - [管理] で、[証明書とシークレット] を選択します。 [クライアント シークレット] セクションで、 [新しいクライアント シークレット] を選択します。
- キーの説明 ("アプリのシークレット" など) を入力し、既定の有効期限のままにして、 [追加] を選択します。
- クライアント シークレットの値をメモします。 この情報は後で必要になります。
手順 2:コード サンプルのダウンロード
手順 3:コード サンプルの構成
ZIP ファイルをローカル フォルダーに展開します。
任意。 統合開発環境を使用する場合は、その環境内でサンプルを開きます。
application.properties ファイルを開きます。 これは、src/main/resources/ フォルダーにあります。
aad.clientId
、aad.authority
、およびaad.secretKey
フィールドの値を、それぞれアプリケーション ID、テナント ID、およびクライアント シークレットの値で置き換えます。 例を次に示します。aad.clientId=Enter_the_Application_Id_here aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/ aad.secretKey=Enter_the_Client_Secret_Here aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me aad.msGraphEndpointHost="https://graph.microsoft.com/"
上のコードでは、次のようになります。
Enter_the_Application_Id_here
は、自分が登録したアプリケーションのアプリケーション ID です。Enter_the_Client_Secret_Here
は、登録済みアプリケーション用に [証明書とシークレット] で作成した [クライアント シークレット] です。Enter_the_Tenant_Info_Here
は、登録したアプリケーションのディレクトリ (テナント) ID 値です。
- localhost で HTTPS を使用するには、
server.ssl.key
プロパティを指定します。 自己署名証明書を生成するには、keytool ユーティリティ (JRE に含まれています) を使用します。
次に例を示します。
keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
- 生成されたキーストア ファイルを resources フォルダーに配置します。
手順 4:コード サンプルの実行
プロジェクトを実行するには、次のいずれかの手順を実行します。
- 埋め込みの Spring Boot サーバーを使用して IDE から直接実行する。
- Maven を使用して WAR ファイルにパッケージ化したうえで、Apache Tomcat などの J2EE コンテナー ソリューションにデプロイする。
IDE からのプロジェクトの実行
IDE から Web アプリケーションを実行するには、[実行] を選択し、プロジェクトのホーム ページに移動します。 このサンプルでは、標準のホームページ URL は https://localhost:8443. です
前面のページで、[ログイン] ボタンを選択してユーザーを Microsoft Entra ID にリダイレクトし、資格情報の入力を求めます。
ユーザーは認証後、
https://localhost:8443/msal4jsample/secure/aad
にリダイレクトされます。 ユーザーがサインインしたので、ページにユーザー アカウントに関する情報が表示されます。 サンプル UI には、次のボタンがあります。- "サインアウト": 現在のユーザーをアプリケーションからサインアウトし、ホーム ページにリダイレクトします。
- Show User Info (ユーザー情報の表示) :Microsoft Graph のトークンを取得し、そのトークンを含む要求で Microsoft Graph を呼び出します。これにより、サインインしたユーザーに関する基本情報が返されます。
Tomcat からのプロジェクトの実行
Web サンプルを Tomcat にデプロイする場合は、ソース コードにいくつかの変更を加えます。
ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication を開きます。
すべてのソース コードを削除し、こちらのコードで置き換えます。
package com.microsoft.azure.msalwebsample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MsalWebSampleApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MsalWebSampleApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MsalWebSampleApplication.class); } }
Tomcat の既定の HTTP ポートは 8080 ですが、ポート 8443 経由の HTTPS 接続が必要です。 この設定を構成するには:
tomcat/conf/system.xml にアクセスします。
<connector>
タグを検索し、既存のコネクタをこのコネクタで置き換えます。<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword" clientAuth="false" sslProtocol="TLS"/>
コマンド プロンプト ウィンドウを開きます。 このサンプルのルート フォルダー (
pom.xml
ファイルが配置されている場所) に移動し、mvn package
を実行してプロジェクトをビルドします。- このコマンドは
/targets
ディレクトリにmsal-web-sample-0.1.0.war
ファイルを生成します。 - このファイルの名前を
msal4jsample.war
に変更します。 - Tomcat またはその他の J2EE コンテナー ソリューションを使用して、WAR ファイルをデプロイします。
msal4jsample.war
ファイルをデプロイするには、これを Tomcat インストールの下にある/webapps/
ディレクトリにコピーしてから、Tomcat サーバーを起動します。
- このコマンドは
ファイルがデプロイされたら、ブラウザーを使用して
https://localhost:8443/msal4jsample
に移動します。
重要
このクイックスタート アプリケーションでは、クライアント シークレットを使用して、それ自体を機密クライアントとして識別します。 クライアント シークレットはプレーンテキストとしてプロジェクト ファイルに追加されるため、セキュリティ上の理由から、アプリケーションを運用環境で使用する前に、クライアント シークレットの代わりに証明書を使用することをお勧めします。 証明書の使用方法の詳細については、「アプリケーションを認証するための証明書資格情報」を参照してください。
詳細情報
このサンプルのしくみ
MSAL の取得
MSAL for Java (MSAL4J) は Java ライブラリであり、ユーザーをサインインさせるために使用されたり、Microsoft ID プラットフォームによって保護されている API へのアクセスに使用されるトークンの要求に使用されたりします。
Maven または Gradle を使用して、アプリケーションに MSAL4J を追加し、アプリケーションの pom.xml (Maven) または build.gradle (Gradle) ファイルに対して以下の変更を行うことで、依存関係を管理します。
pom.xml 内:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
build.gradle 内:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
MSAL の初期化
MSAL4J を使用するファイルの先頭に次のコードを追加して、MSAL for Java への参照を追加します。
import com.microsoft.aad.msal4j.*;
ヘルプとサポート
サポートが必要な場合、問題をレポートする場合、またはサポート オプションについて知りたい場合は、開発者向けのヘルプとサポートに関するページを参照してください。
次のステップ
Microsoft ID プラットフォームでユーザーをサインインさせる Web アプリの構築方法の詳細については、複数のパートから構成されるシナリオ シリーズを参照してください。