0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Microsoft ID プラットフォーム】(Azure AD) Java Web アプリ (eclipse)-設定編-

Posted at

はじめに(背景)

下記検証の続きとなります。

SPA (Node.js)
https://qiita.com/Design_Tshirt7/items/553958e3724cc3718aa9
ASP.NET
https://qiita.com/Design_Tshirt7/items/c282d645c2117be12d4e
ASP.NET Core
https://qiita.com/Design_Tshirt7/items/ed8d45a0dff76b741c03
Java Web アプリ (WARfile)
https://qiita.com/Design_Tshirt7/items/df8dd7799bfdc32c9078

背景は、上記と同じとなりますが、初めてご訪問頂いた人もいると思いますので、記載させて頂きます。

Office365を導入して、数年が経ちました。
皆様が慣れてきて、そろそろ、Office365とのシングルサインをすれば、便利になるんじゃない!!との声が出来てきました。そして、上司から、"Single Sign On よろしく!"との恐ろしい声がかかりました。

確かにIDaaSとしてのAzure ADは既に稼働しているので、後は、連携するアプリケーションの準備が出来れば可能ですが、、、このオンプレWebアプリケーションとIDaaSとのSSOは敷居が高い。

なぜなら、アプリケーション側でSAML/OpenIDConnect/OAuthとおしゃべりができないので、改修が必須となる。そこで、Microsoft ID プラットフォームを使えば、ライブラリが提供されているので、これをうまく活用すれば、SSOの敷居が少しでも低くるなると考え、検証を開始致しました。

Microsoft ID プラットフォーム

『Microsoft ID プラットフォーム (旧称: 開発者向け Azure Active Directory)』
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/

Microsoft ID プラットフォームは、Azure Active Directory (Azure AD) 開発者プラットフォームの進化版です。 これにより、すべての Microsoft ID にサインインして、Microsoft API (Microsoft Graph) や開発者が構築した API を呼び出すためのトークンを取得するアプリケーションを開発者が構築できます。 これはフル機能を備えたプラットフォームであり、OAuth 2.0 および OpenID Connect 標準に準拠した認証サービス、オープンソース ライブラリ、アプリケーションの登録および構成、充実した概念とリファレンスのドキュメント、クイック スタート サンプル、コード サンプル、チュートリアル、攻略ガイドによって構成されています。

ふむふむ。確かにサンプルコードがあるので、できそうかも。。。

いざトライ!!

1.参照ページ
『Quickstart: Add sign-in with Microsoft to a Java web app』
https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-java-webapp

*日本語ページにするとstep3の4が省略されているので注意です。

2.登場人物
1.Identity Provider (Azure AD)

  • オンマイクロソフトアカウントを使います。
    2.Relying Party (Java)
    (事前の準備をお願い致します。インストール方法は割愛させて頂きます)
  • Java Development Kit (JDK) 8 以降
  • Maven
  • Spring boot
  • eclipse

3.手順
◆手順1:アプリケーションの登録
1.Azure portal(https://portal.azure.com) にサインインします。
2.[ホーム]-> [Azure AD Active Directory] -> [アプリの登録]へ進む
1.appregistration.PNG

3.[新規登録] をクリックします。
2.newregistration.PNG

4.アプリケーション登録で下記項目を選択して、[登録]をクリック。
(1).名前欄:任意のアプリケーション名を入力
(2).サポートされているアカントの種類:この組織ディレクトリのみに含まれるアカウント
(3).リダイレクトURL:空白 => (後ほど、入力されます。)
1.reg.png

5.登録したアプリケーションが表示されますので、[クイックスタート]をクリック。
2.quick.PNG

6.クイックスタートガイドの[Java]をクリック。
3.java.png

7.[これらの変更を行います]をクリック。
4.change.PNG

8.下記構成内容が表示されますので、[更新する]をクリック。
(1).リダイレクト URI :
http://localhost:8080/msal4jsample/secure/aad
http://localhost:8080/msal4jsample/graph/me
(2).クライアントシークレット

  • 認可コードフローとなりますので、アクセストーンとIDトークンのチェックは無しとなっております。
5.update.PNG

9.クライアントシークレットが表示されますので、コピーをして、[完了]をクリック。

  • クライアントシークレットは以降の手順で必要となりますので、必ずコピーをお願い致します。
6.complete.PNG

10.下記の[認証]画面から応答URLの内容が反映されている事を確認。
7authn.PNG

◆手順2:プロジェクトのダウンロード
1.warを作成する為のプロジェクトファイルをダウンロードします。

プロジェクトファイル:ms-identity-java-webapp-master.zip

1.download.PNG

◆手順3:コード サンプルの構成
1.ZIP ファイルをローカル フォルダーに展開します。
1.folder.PNG

2.src\main\resources\のapplication.propertiesファイルを編集致します。
2.application.png

name value
aad.clientId (クライアントID) 69b99f5e-673d-44b6-b777-64ac67f49bbc
aad.authority (テナントID) a94216cd-7c42-4b24-8ba0-ce5c210951bd
aad.secretKey(クライアントシークレット) B_wP8cT8g?z=4RFGe3TvKe[M@fAJvhS8
3.application.png

3.Self-signed Certificateの作成とapplication.propertiesファイルの編集
3-1.Keyの作成を実施致します。
4.ssl.PNG

3-2.作成したkeyを"resource"フォルダに移動致します。
5.keyfile.PNG
6.resoruce.PNG

3-3.application.propertiesファイルの編集を行います。
7.application2.PNG

◆手順4:Java, Maven, spring boot, eclipseのダウンロード&設定
*手順は割愛させていただきます。
*私が検証で使った各バージョンは、下記となります。

C:\>java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
C:\>mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: C:\apache-maven-3.6.3\bin\..
Java version: 1.8.0_172, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_172\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

*eclipse version
EclipseVersion.PNG
*spring boot version
springbootversion.PNG

◆手順5:コード サンプルの実行
1.[mvn eclise:eclipse]を使ってEclipseプロジェクトへの変換を実施致します。
1.mvncommand.PNG

2.Eclipseプロジェクトへのインポート。
2-1.[ファイル]-[インポート]をクリック。
2.import.PNG

2-2.[既存Mavenプロジェクト]を選択して、[次へ]をクリック。
3.maven.PNG

2-3.ルートディレクトにプロジェクトファイルを展開したフォルダを選択するとプロジェクトにpom.xmlが自動的に表示されますので、[完了]をクリック。
4.mavnproject.PNG

2-4.インポートに時間がかかります。
右下に下記進捗が表示されます。
Mavenプロジェクトのインポート -> Mavenプロジェクトのの更新 -> ワークスペースのビルド -> msal-web-sampleの検証->インデックスの更新

2-5.パッケージ・エクスプローラーに[msal-web-sample]が追加されます。
5.eclipse.PNG
*事前にspring bootをインストールしてありますので、msal-web-sampleの横に[boot]が表示されます。

◆手順6: サインイン
*事前情報
Fiddlerログを基にトークンの取得情報を途中まで書いたのですが、長くなってしまったので、別記事でアップロードさせていただきます。

*事前準備
(1).Fiddlerでパケットキャプチャの準備。
(2).ダウンロードしたコアプロジェクトサンプルの仕組みをきちんと確認。
Flow.PNG

1.spring bootの起動
1-1.プロジェクト[msal-web-sample]を右クリック -> [デバッグ] -> [Javaアプリケーション]をクリック。
1.startJavaApp.PNG

1-2.MsalWebSampleApplicaitonを選択して、[OK]をクリック。
2.msalwebsample.PNG

1-3.コンソール上にspring bootのログが表示されます。
3.console.PNG

2.認可コードの取得(認可エンドポイント)
2-1.https://localhost:8080にアクセスして、[Login]をクリック。
4.loginscreen.PNG

2-2.資格情報(ID/パスワード)の入力。
2-3.要求されているアクセス許可を承諾。
5.consent.PNG

2-4.ログインが完了して、アカント情報が表示されます。
6.sucesslogin.PNG

3.User Infoエンドポイントへのアクセス
3-1.[Show User Info]をクリック。
7.userinfo1.PNG

3-2.要求されているアクセス許可を承諾。
8.consent2.PNG

3-3.現在ログインしているユーザーの情報が表示されます。
9.userinfo2.PNG

3-4.コンソールログは、下記となります。
10.springboot.PNG

無事ログイン完了!!

まとめ

トークンの取得情報は別記事でアップロードさせていただきます。
次回は、pythonの検証を予定しております。

最後に、私の記事が少しでも、皆様の役に立てれば幸いでございます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?