次の方法で共有


Spring Web アプリに Microsoft Entra アカウントでサインインを追加する

この記事では、Microsoft Entra アカウントによるサインインをサポートする Spring Web アプリ 開発する方法について説明します。 この記事のすべての手順を完了すると、Web アプリが匿名でアクセスされると、Microsoft Entra サインイン ページにリダイレクトされます。 次のスクリーンショットは、Microsoft Entra サインイン ページを示しています。

アプリケーションの [サインイン] ダイアログのスクリーンショット。

前提 条件

この記事の手順を完了するには、次の前提条件が必要です。

  • サポートされている Java Development Kit (JDK)。 Azure での開発時に使用できる JDK の詳細については、Azure および Azure Stackでの Java サポート 参照してください。
  • Apache Maven はバージョン 3.0 以上です。
  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成します。

重要

この記事の手順を完了するには、Spring Boot バージョン 2.5 以降が必要です。

Spring Initializr を使用してアプリを作成する

  1. https://start.spring.io/ を参照します。

  2. Javaを使用して Maven プロジェクトを生成することを指定し、アプリケーションの グループArtifact 名を入力します。

  3. 依存関係Spring WebMicrosoft Entra ID、および OAuth2 クライアントに追加します。

  4. ページの下部にある [GENERATE] ボタンを選択します。

  5. メッセージが表示されたら、ローカル コンピューター上のパスにプロジェクトをダウンロードします。

Microsoft Entra インスタンスを作成する

Active Directory インスタンスを作成する

既存のインスタンスの管理者である場合は、このプロセスをスキップできます。

  1. https://portal.azure.comにログインします。

  2. [すべてのサービス][ID][Microsoft Entra ID] の順に選択します。

  3. 組織名初期ドメイン名を入力します。 ディレクトリの完全な URL をコピーします。 この URL を使用して、このチュートリアルの後半でユーザー アカウントを追加します。 (例: azuresampledirectory.onmicrosoft.com.)

    ディレクトリの完全な URL をコピーします。 この URL を使用して、このチュートリアルの後半でユーザー アカウントを追加します。 (例: azuresampledirectory.onmicrosoft.com.)。

    完了したら、[作成] を選択します。 新しいリソースの作成には数分かかります。

  4. 完了したら、表示されたリンクを選択して新しいディレクトリにアクセスします。

  5. テナント IDをコピーしてください。 このチュートリアルの後半で、ID 値を使用して、application.properties ファイルを構成します。

Spring Boot アプリのアプリケーション登録を追加する

  1. ポータル メニューから、[アプリの登録]選択し、[アプリケーションの登録] 選択します。

  2. アプリケーションを指定し、[登録] を選択します。

  3. アプリ登録のページが表示されたら、アプリケーション (クライアント) IDディレクトリ (テナント) IDコピーします。 これらの値を使用して、このチュートリアルの後半で application.properties ファイルを構成します。

  4. ナビゲーション ウィンドウで 証明書 & シークレット を選択します。 次に、新しいクライアント シークレット選択します。

    アプリケーションの [証明書 & シークレット] 画面のスクリーンショット。[新しいクライアント シークレット] が強調表示されています。

  5. 説明 を追加して、有効期限 リストから期間を選択します。 追加を選択します。 キーの値は自動的に入力されます。

  6. クライアント シークレットの値をコピーして保存し、このチュートリアルの後半で application.properties ファイルを構成します。 (後でこの値を取得することはできません)。

    新しいクライアント シークレットが強調表示されているアプリケーションのスクリーンショット。

  7. アプリの登録のメイン ページで、[認証] を選択し、[プラットフォームの追加] 選択します。 次に、Web アプリケーション選択します。

  8. 新しいリダイレクト URI として「http://localhost:8080/login/oauth2/code/」と入力し、[構成] を選択します。

  9. 3.0.0 より前の Microsoft Entra スターターバージョンを使用するように pom.xml ファイルを変更した場合:[暗黙的な許可とハイブリッド フロー] セクションで、ID トークン (暗黙的およびハイブリッド フローに使用)を選択してから、[保存] を選択します。

ディレクトリにユーザー アカウントを追加し、そのアカウントを appRole に追加する

  1. Active Directory の [の概要] ページで、[ユーザー] を選択し、[新しいユーザー] 選択します。

  2. ユーザ パネルが表示されたら、ユーザ名を入力します。 次に、[作成] を選択します。

    [新しいユーザー] ダイアログのスクリーンショット。

    手記

    ユーザー名を入力するときは、このチュートリアルの前半のディレクトリ URL を指定する必要があります。 例えば:

    test-user@azuresampledirectory.onmicrosoft.com

  3. アプリの登録のメイン ページで、[アプリ ロール]選択し、[アプリ ロール作成] を選択します。 フォーム フィールドに値を入力し、[このアプリ ロールを有効にしますか?] を選択し、[適用] を選択します。

    アプリケーションの [アプリ ロール] 画面のスクリーンショット。[アプリ ロールの作成] ウィンドウが表示されています。

  4. Microsoft Entra ディレクトリの [概要] ページで、[エンタープライズ アプリケーション] を選択します。

  5. すべてのアプリケーションを選択し、前の手順でアプリ ロールを追加したアプリケーションを選択します。

  6. ユーザーとグループを選択し、その後 ユーザー/グループの追加を選択します。

  7. [ユーザー][選択なし] を選択します。 前に作成したユーザーを選択し、を選択」を選び、次にを割り当て」を選択します。 前に複数のアプリ ロールを作成した場合は、ロールを選択します。

  8. [ユーザー] パネルに戻り、テスト ユーザーを選択し、[パスワードリセット] を選択して、パスワードをコピーします。 パスワードは、このチュートリアルの後半でアプリケーションにログインするときに使用します。

アプリを構成してコンパイルする

  1. このチュートリアルの前半で作成してダウンロードしたプロジェクト アーカイブからファイルをディレクトリに抽出します。

  2. プロジェクト内の src/main/resources フォルダーに移動し、テキスト エディターで application.properties ファイルを開きます。

  3. 前に作成した値を使用して、アプリ登録の設定を指定します。 例えば:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Active Directory ID:
    spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    どこ:

    パラメーター 説明
    spring.cloud.azure.active-directory.enabled spring-cloud-azure-starter-active-directory によって提供される機能を有効にする
    spring.cloud.azure.active-directory.profile.tenant-id 前の Active Directory の ディレクトリ ID を指定します。
    spring.cloud.azure.active-directory.credential.client-id 以前に完了したアプリ登録からのアプリケーション ID が含まれています。
    spring.cloud.azure.active-directory.credential.client-secret 以前に完了したアプリ登録キーの を指定します。
  4. application.properties ファイルを保存して閉じます。

  5. アプリケーションの Java ソース フォルダー コントローラー という名前のフォルダーを作成します。 例: src/main/java/com/wingtiptoys/security/controller

  6. コントローラー フォルダーに HelloController.java という名前の新しい Java ファイルを作成し、テキスト エディターで開きます。

  7. 次のコードを入力し、ファイルを保存して閉じます。

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

アプリをビルドしてテストする

  1. コマンド プロンプトを開き、アプリの pom.xml ファイルがあるフォルダーにディレクトリを変更します。

  2. Maven を使用して Spring Boot アプリケーションをビルドし、実行します。 例えば:

    mvn clean package
    mvn spring-boot:run
    
  3. Maven によってアプリケーションがビルドおよび起動されたら、Web ブラウザーで http://localhost:8080/Admin を開きます。 ユーザー名とパスワードの入力を求められます。

    アプリケーションの [サインイン] ダイアログのスクリーンショット。

    手記

    新しいユーザー アカウントの最初のログインである場合は、パスワードの変更を求めるメッセージが表示されることがあります。

    アプリケーションの [パスワードの更新] ダイアログのスクリーンショット。

  4. 正常にログインすると、コントローラーからのサンプルの "管理者メッセージ" テキストが表示されます。

    アプリケーション管理者メッセージのスクリーンショット。

概要

このチュートリアルでは、Microsoft Entra スターターを使用して新しい Java Web アプリケーションを作成し、新しい Microsoft Entra テナントを構成し、テナントに新しいアプリケーションを登録した後、Spring 注釈とクラスを使用して Web アプリを保護するようにアプリケーションを構成しました。

関連項目

  • 新しい UI オプションの詳細については、「新しい Azure portal アプリ登録トレーニング ガイド を参照してください。

次の手順

Spring と Azure の詳細については、Spring on Azure ドキュメント センターに進んでください。