クイック スタート: Java Web アプリでユーザーのサインインと Microsoft Graph API の呼び出しを行う

このクイックスタートでは、Java Web アプリケーションでユーザーをサインインし、Microsoft Graph API を呼び出す方法を示すコード サンプルをダウンロードして実行します。 任意の Microsoft Entra 組織のユーザーは、アプリケーションにサインインできます。

図については、「このサンプルのしくみ」を参照してください。

前提条件

このサンプルを実行するには、以下が必要です。

クイック スタート アプリを登録してダウンロードする

ヒント

この記事の手順は、開始するポータルによって若干異なる場合があります。

クイックスタート アプリケーションを開始する方法としては、簡易 (オプション 1) と手動 (オプション 2) の 2 つがあります。

オプション 1: アプリを登録して自動構成を行った後、コード サンプルをダウンロードする

  1. クラウド アプリケーション管理者以上の権限で Microsoft Entra 管理センター - アプリの登録クイックスタート エクスペリエンスに移動します。
  2. アプリケーションの名前を入力し、 [登録] を選択します。
  3. ポータルのクイックスタート エクスペリエンスの案内に従って、自動的に構成されたアプリケーション コードをダウンロードします。

オプション 2:アプリケーションを登録し、アプリケーションとコード サンプルを手動で構成する

手順 1:アプリケーションの登録

アプリケーションを登録し、それにアプリの登録情報を手動で追加するには、次の手順を実行します。

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
  2. 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。
  3. [ID]>[アプリケーション]>[アプリの登録] に移動し、[新規登録] を選びます。
  4. 自分のアプリケーションの名前を入力します (例: java-webapp)。 アプリのユーザーには、この名前が表示されます。 これは後で変更できます。
  5. [登録] を選択します。
  6. [概要] ページのアプリケーション (クライアント) IDディレクトリ (テナント) ID をメモします。 これらの値は後で必要になります。
  7. [管理] で、 [認証] を選択します。
  8. [プラットフォームの追加]>[Web] の順に選択します。
  9. [リダイレクト URI] セクションで、「https://localhost:8443/msal4jsample/secure/aad」と入力します。
  10. [構成] をクリックします。
  11. [Web] セクションの [リダイレクト URI] に、2 つ目のリダイレクト URI として「https://localhost:8443/msal4jsample/graph/me」と入力します。
  12. [管理] で、[証明書とシークレット] を選択します。 [クライアント シークレット] セクションで、 [新しいクライアント シークレット] を選択します。
  13. キーの説明 ("アプリのシークレット" など) を入力し、既定の有効期限のままにして、 [追加] を選択します。
  14. クライアント シークレットのをメモします。 この情報は後で必要になります。

手順 2:コード サンプルのダウンロード

コード サンプルをダウンロードします

手順 3:コード サンプルの構成

  1. ZIP ファイルをローカル フォルダーに展開します。

  2. 任意。 統合開発環境を使用する場合は、その環境内でサンプルを開きます。

  3. application.properties ファイルを開きます。 これは、src/main/resources/ フォルダーにあります。 aad.clientIdaad.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 値です。
  1. 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
  1. 生成されたキーストア ファイルを resources フォルダーに配置します。

手順 4:コード サンプルの実行

プロジェクトを実行するには、次のいずれかの手順を実行します。

  • 埋め込みの Spring Boot サーバーを使用して IDE から直接実行する。
  • Maven を使用して WAR ファイルにパッケージ化したうえで、Apache Tomcat などの J2EE コンテナー ソリューションにデプロイする。
IDE からのプロジェクトの実行

IDE から Web アプリケーションを実行するには、[実行] を選択し、プロジェクトのホーム ページに移動します。 このサンプルでは、標準のホームページ URL は https://localhost:8443. です

  1. 前面のページで、[ログイン] ボタンを選択してユーザーを Microsoft Entra ID にリダイレクトし、資格情報の入力を求めます。

  2. ユーザーは認証後、https://localhost:8443/msal4jsample/secure/aad にリダイレクトされます。 ユーザーがサインインしたので、ページにユーザー アカウントに関する情報が表示されます。 サンプル UI には、次のボタンがあります。

    • "サインアウト": 現在のユーザーをアプリケーションからサインアウトし、ホーム ページにリダイレクトします。
    • Show User Info (ユーザー情報の表示) :Microsoft Graph のトークンを取得し、そのトークンを含む要求で Microsoft Graph を呼び出します。これにより、サインインしたユーザーに関する基本情報が返されます。
Tomcat からのプロジェクトの実行

Web サンプルを Tomcat にデプロイする場合は、ソース コードにいくつかの変更を加えます。

  1. 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);
        }
       }
      
  2. 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"/>
      
  3. コマンド プロンプト ウィンドウを開きます。 このサンプルのルート フォルダー (pom.xml ファイルが配置されている場所) に移動し、mvn package を実行してプロジェクトをビルドします。

    • このコマンドは /targets ディレクトリに msal-web-sample-0.1.0.war ファイルを生成します。
    • このファイルの名前を msal4jsample.war に変更します。
    • Tomcat またはその他の J2EE コンテナー ソリューションを使用して、WAR ファイルをデプロイします。
      • msal4jsample.war ファイルをデプロイするには、これを Tomcat インストールの下にある /webapps/ ディレクトリにコピーしてから、Tomcat サーバーを起動します。
  4. ファイルがデプロイされたら、ブラウザーを使用して https://localhost:8443/msal4jsample に移動します。

重要

このクイックスタート アプリケーションでは、クライアント シークレットを使用して、それ自体を機密クライアントとして識別します。 クライアント シークレットはプレーンテキストとしてプロジェクト ファイルに追加されるため、セキュリティ上の理由から、アプリケーションを運用環境で使用する前に、クライアント シークレットの代わりに証明書を使用することをお勧めします。 証明書の使用方法の詳細については、「アプリケーションを認証するための証明書資格情報」を参照してください。

詳細情報

このサンプルのしくみ

Diagram that shows how the sample app generated by this quickstart works.

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 アプリの構築方法の詳細については、複数のパートから構成されるシナリオ シリーズを参照してください。