Spring Web アプリに Microsoft Entra アカウントでサインインを追加する
この記事では、Microsoft Entra アカウントによるサインインをサポートする Spring Web アプリ
前提 条件
この記事の手順を完了するには、次の前提条件が必要です。
- サポートされている Java Development Kit (JDK)。 Azure での開発時に使用できる JDK の詳細については、Azure および Azure Stackでの Java サポート
参照してください。 - Apache Maven はバージョン 3.0 以上です。
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成します。
重要
この記事の手順を完了するには、Spring Boot バージョン 2.5 以降が必要です。
Spring Initializr を使用してアプリを作成する
https://start.spring.io/ を参照します。
Javaを使用して Maven プロジェクトを生成することを指定し、アプリケーションの グループ と Artifact 名を入力します。
依存関係 を Spring Web、Microsoft Entra ID、および OAuth2 クライアントに追加します。
ページの下部にある [GENERATE] ボタンを選択します。
メッセージが表示されたら、ローカル コンピューター上のパスにプロジェクトをダウンロードします。
Microsoft Entra インスタンスを作成する
Active Directory インスタンスを作成する
既存のインスタンスの管理者である場合は、このプロセスをスキップできます。
https://portal.azure.comにログインします。
[すべてのサービス]、[ID]、[Microsoft Entra ID] の順に選択します。
組織名 と 初期ドメイン名を入力します。 ディレクトリの完全な URL をコピーします。 この URL を使用して、このチュートリアルの後半でユーザー アカウントを追加します。 (例:
azuresampledirectory.onmicrosoft.com
.)ディレクトリの完全な URL をコピーします。 この URL を使用して、このチュートリアルの後半でユーザー アカウントを追加します。 (例:
azuresampledirectory.onmicrosoft.com
.)。完了したら、[作成] を選択します。 新しいリソースの作成には数分かかります。
完了したら、表示されたリンクを選択して新しいディレクトリにアクセスします。
テナント IDをコピーしてください。 このチュートリアルの後半で、ID 値を使用して、application.properties ファイルを構成します。
Spring Boot アプリのアプリケーション登録を追加する
ポータル メニューから、[アプリの登録]
選択し、[アプリケーションの登録] 選択します。 アプリケーションを指定し、[登録] を選択します。
アプリ登録のページが表示されたら、アプリケーション (クライアント) ID と ディレクトリ (テナント) IDコピーします。 これらの値を使用して、このチュートリアルの後半で application.properties ファイルを構成します。
ナビゲーション ウィンドウで 証明書 & シークレット を選択します。 次に、新しいクライアント シークレット
選択します。 説明 を追加して、有効期限 リストから期間を選択します。 追加を選択します。 キーの値は自動的に入力されます。
クライアント シークレットの値をコピーして保存し、このチュートリアルの後半で application.properties ファイルを構成します。 (後でこの値を取得することはできません)。
アプリの登録のメイン ページで、[認証
] を選択し、[プラットフォームの追加] 選択します。 次に、Web アプリケーション 選択します。 新しいリダイレクト URI として「
http://localhost:8080/login/oauth2/code/
」と入力し、[構成] を選択します。3.0.0 より前の Microsoft Entra スターターバージョンを使用するように pom.xml ファイルを変更した場合:[暗黙的な許可とハイブリッド フロー] セクションで、ID トークン (暗黙的およびハイブリッド フローに使用)を選択してから、[保存] を選択します。
ディレクトリにユーザー アカウントを追加し、そのアカウントを appRole に追加する
Active Directory の [
の概要 ] ページで、[ユーザー ] を選択し、[新しいユーザー]選択します。 ユーザ パネルが表示されたら、ユーザ名 と 名を入力します。 次に、[作成] を選択します。
手記
ユーザー名を入力するときは、このチュートリアルの前半のディレクトリ URL を指定する必要があります。 例えば:
test-user@azuresampledirectory.onmicrosoft.com
アプリの登録のメイン ページで、[アプリ ロール]
選択し、[アプリ ロール 作成] を選択します。 フォーム フィールドに値を入力し、[このアプリ ロールを有効にしますか?] を選択し、[適用] を選択します。 Microsoft Entra ディレクトリの [概要] ページで、[エンタープライズ アプリケーション] を選択します。
すべてのアプリケーションを選択し、前の手順でアプリ ロールを追加したアプリケーションを選択します。
ユーザーとグループを選択し、その後 ユーザー/グループの追加を選択します。
[ユーザー] で [選択なし] を選択します。 前に作成したユーザーを選択し、「を選択」を選び、次に「を割り当て」を選択します。 前に複数のアプリ ロールを作成した場合は、ロールを選択します。
[
ユーザー ] パネルに戻り、テスト ユーザーを選択し、[パスワードリセット] を選択して、パスワードをコピーします。 パスワードは、このチュートリアルの後半でアプリケーションにログインするときに使用します。
アプリを構成してコンパイルする
このチュートリアルの前半で作成してダウンロードしたプロジェクト アーカイブからファイルをディレクトリに抽出します。
プロジェクト内の src/main/resources フォルダーに移動し、テキスト エディターで application.properties ファイルを開きます。
前に作成した値を使用して、アプリ登録の設定を指定します。 例えば:
# 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
以前に完了したアプリ登録キーの値 を指定します。 application.properties ファイルを保存して閉じます。
アプリケーションの Java ソース フォルダー コントローラー という名前のフォルダーを作成します。 例: src/main/java/com/wingtiptoys/security/controller。
コントローラー フォルダーに HelloController.java という名前の新しい Java ファイルを作成し、テキスト エディターで開きます。
次のコードを入力し、ファイルを保存して閉じます。
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"; } }
アプリをビルドしてテストする
コマンド プロンプトを開き、アプリの pom.xml ファイルがあるフォルダーにディレクトリを変更します。
Maven を使用して Spring Boot アプリケーションをビルドし、実行します。 例えば:
mvn clean package mvn spring-boot:run
Maven によってアプリケーションがビルドおよび起動されたら、Web ブラウザーで
http://localhost:8080/Admin
を開きます。 ユーザー名とパスワードの入力を求められます。手記
新しいユーザー アカウントの最初のログインである場合は、パスワードの変更を求めるメッセージが表示されることがあります。
正常にログインすると、コントローラーからのサンプルの "管理者メッセージ" テキストが表示されます。
概要
このチュートリアルでは、Microsoft Entra スターターを使用して新しい Java Web アプリケーションを作成し、新しい Microsoft Entra テナントを構成し、テナントに新しいアプリケーションを登録した後、Spring 注釈とクラスを使用して Web アプリを保護するようにアプリケーションを構成しました。
関連項目
次の手順
Spring と Azure の詳細については、Spring on Azure ドキュメント センターに進んでください。