Spring Security Azure AD: エンタープライズ クラスの認証と承認を追加

執筆者: Yitao Dong (Program Manager, Java on Azure)

このポストは、2018 年 2 月 20 日に投稿された Spring Security Azure AD: Wire up enterprise grade authentication and authorization の翻訳です。

 

このたび、Azure Active Directory (Azure AD) と Spring Security が統合され、Java Web アプリケーションの保護に利用できるようになりました。わずか数行のコードを構成するだけで、Spring Boot プロジェクトにエンタープライズ クラスの認証と承認を追加できます。

Azure AD 用 Spring Boot Starter (英語) を使用すると、Java 開発者は Azure AD と OAuth 2.0 を使用した Web アプリケーションの認証ワークフローを手軽に作成し、バックエンドのセキュリティを強化できます。また、Spring Security の機能を使用して、Azure AD で保護された Web API のロール ベースの承認ワークフローを作成できます。

 

利用を開始するには

ここでは、SpringOne 2017 で Erich Gamma がご紹介した (英語) To-do アプリを例として説明します。このサンプル (英語) は Angular JS クライアントと Spring Boot の RESTful Web サービスという 2 つのレイヤーで構成されており、ログインから Azure AD Graph API を使用してユーザー情報を取得するまでのフローを示します。

 

承認フロー チャート

承認は、以下の 3 段階で実行されます。

 1.   資格情報を使用してログインし、Azure AD の検証を受けます。

 2.   Azure AD Graph API からトークンとメンバーシップ情報を取得します。

 3.   メンバーシップを評価してロール ベースの承認を行います。

spring security aad auth flow chart

Azure AD にアプリケーションを新規登録する

まずは、Azure Active Directory にアプリケーションを新規登録します。アプリケーションの準備が整ったら、クライアント キーを生成してアプリケーションにアクセス許可を付与します。

spring security aad register a new app

Spring Security Azure AD の機能

Spring Initializr (英語) を使用すると、Spring Security および Azure Active Directory への依存関係を持つプロジェクトを手軽に新規作成できます。プロジェクト内で Azure AD 接続を指定し、aadAuthFilter を追加します。その後、以下の機能を使用して、Azure AD の認証とロール ベースの承認を簡単にセットアップできます。

  • @PreAuthorize: Spring の @PreAuthorize アノテーションを実装すると、ログインしているユーザーのロールとアクセス許可に基づいてメソッド レベルのセキュリティが提供されます。
  • isMemberOf(): 指定した Azure ユーザー グループのロールとアクセス許可に基づいてアクセスを制御します。

spring security features

 

Azure AD グループによるアクセス制御

Web ブラウザーでアプリを実行してテストします。Azure AD グループのメンバーを追加または削除すると、簡単にアクセスを制御できます。

spring security aad todo app

spring security aad access control

次のステップ

Azure で Spring を使用する場合の詳細については、以下のページを参照してください。

フィードバックのお願い

マイクロソフトでは、今後の改良の参考とするために皆様からのご意見やご質問をお待ちしています。Gitter (英語) からお気軽にお問い合わせください。