java ee 7 multi factor authentiaction with microsoft azure ad
TRANSCRIPT
![Page 2: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/2.jpg)
自己紹介
Java エバンジェリスト 2015 年 7 月 11 日入社
元 Sun Microsystems 元 Oracle ハッシュタグ # てらだよしおがんばれ
![Page 3: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/3.jpg)
![Page 4: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/4.jpg)
![Page 5: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/5.jpg)
Extreamly Changed !!
![Page 6: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/6.jpg)
今日は Azure AD
![Page 7: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/7.jpg)
.Net の方々だけに使って頂いているのはもったいない
![Page 8: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/8.jpg)
Java Web アプリもAzure AD を利用しよりセキュアに !!
![Page 9: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/9.jpg)
• Java 技術者へも AD のススメ• Java Web アプリのデモ• Java 標準の認証• Azure での実装方法について• まとめ
今日のアジェンダ
![Page 10: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/10.jpg)
• Java 技術者へも AD のススメ• Java Web アプリのデモ• Java 標準の認証• Azure での実装方法について• まとめ
今日のアジェンダ
![Page 11: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/11.jpg)
ミッション・クリティカルなJava システムへオススメ
![Page 12: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/12.jpg)
パスワードは暗号化すれば安全?
• 総当たり攻撃• 辞書攻撃• パスワードリスト型攻撃• フィッシング
![Page 13: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/13.jpg)
多要素認証でよりセキュアに
2種類以上の要素で認証
知識情報 : パスワード / ピン番号
所持情報 : 電話、クレジットカード、ハードウェア・トークン
生体情報 : 指紋認証、網膜スキャンなど
![Page 14: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/14.jpg)
通常のユーザ名・パスワード認証
![Page 15: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/15.jpg)
Mobile Apps
個人が所有するデバイスでも認証
Phone calls Text messages
ALERT
1 4 5 6 7 6
![Page 16: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/16.jpg)
多要素認証用モバイル・アプリ
![Page 17: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/17.jpg)
Azure AD は安全アイデンティティプロバイダーとしての安全性• Azure AD からデータを盗み出すには多くの壁がある
ID/Passw
ord
追加
認証
要素
権限
チェ
ック
・棚
卸
アプ
リケ
ーシ
ョン
認証
•ス
マー
トカ
ード
•電
話応
答•
ワン
タイ
ムパ
スワ
ード
REST API
監査ログ
Machine Learning による分析
•特
権管
理機
能に
よる
管理
特権
の有
効期
限設
定、
棚卸
•Azure AD か
ら情
報を
取得
する
には
、ア
プリ
ケー
ショ
ン自
身も
認証
され
てい
る必
要が
ある
無償 Premium Premium 無償
![Page 18: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/18.jpg)
• Java 技術者への AD のススメ• Java Web アプリのデモ• Java 標準の認証• Azure での実装方法について• まとめ
今日のアジェンダ
![Page 19: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/19.jpg)
![Page 20: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/20.jpg)
• Java 技術者への AD のススメ• Java Web アプリのデモ• Java 標準の認証• Azure での実装方法について• まとめ
今日のアジェンダ
![Page 21: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/21.jpg)
認証した情報の取得
![Page 22: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/22.jpg)
HttpServletRequest httpServletRequest = ……;Principal userPrincipal = httpServletRequest.getUserPrincipal();String loginUserName = userPrincipal.getName();
認証したユーザ名の取得
if(httpServletRequest.isUserInRole("admin”)){ // 管理者権限を持つユーザ} else if (httpServletRequest.isUserInRole(”users”)){ // ユーザ権限を持つユーザ}
ユーザ名の権限 ( ロール ) 取得
![Page 23: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/23.jpg)
public boolean isAdmin() { HttpServletRequest httpServletRequest = ……; return httpServletRequest.isUserInRole("admin"); }
管理者権限の有無の検証
<p:dataTable var=“usersingroup” value=“#{indexPage.users}” rendered=“#{indexPage.admin}”> <p:column headerText=“グループ所属メンバー” > <h:outputText value=“#{usersingroup.displayName}”/> </p:column></p:dataTable>
ビューの表示・非表示の切り替え
![Page 24: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/24.jpg)
プログラム実行時の
宣言的セキュリティ
![Page 25: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/25.jpg)
@PermitAllpublic class Calculator { @RolesAllowed(“admin”) public void createUser(User user) { //... } @RunAs(“admin") public User getUserInfo(){ //... } @DenyAll public void debugSomething() { //... }}
![Page 26: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/26.jpg)
Java 認証・認可の検証プログラム実装はかんたん
![Page 27: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/27.jpg)
• Java 技術者への AD のススメ• Java Web アプリのデモ• Java 標準の認証• Azure での実装方法について• まとめ
今日のアジェンダ
![Page 28: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/28.jpg)
追加できるアプリの種類は2種類
Web アプリ
ネィティブ・アプリ
![Page 29: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/29.jpg)
通常は“ Web アプリ”を選択
![Page 30: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/30.jpg)
Azure AD の認証・認可処理シーケンス
![Page 31: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/31.jpg)
Azure ADBrowser Web App
authorize token graph
Navigate to your application
Post token and auth code to your application’s redirect URL
No session,send authNrequest
Verifytokensignature
302 redirect for sign in
OpenID Connect request(user signs in)
Set cookie and return user to page they started on
Redeem auth code
Return access token and refresh token
Call the Graph APIOpenID を利用
![Page 32: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/32.jpg)
MS が提供する認証ライブラリAzure AD Authentication Library (ADAL) for Java
https://github.com/AzureAD/azure-activedirectory-library-for-java
![Page 33: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/33.jpg)
Azure ADBrowser Web App
authorize token graph
Navigate to your application
Post token and auth code to your application’s redirect URL
No session,send authNrequest
Verifytokensignature
302 redirect for sign in
OpenID Connect request(user signs in)
Set cookie and return user to page they started on
Redeem auth code
Return access token and refresh token
ADAL4J の利用範囲
![Page 34: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/34.jpg)
ADAL4J : Spring を利用したサンプル
https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect
![Page 35: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/35.jpg)
Filter では Java 標準の機能は使えません
@RollAllowed
httpServletRequest.getUserPrincipal()
httpServletRequest.isUserInRole("admin")
@DenyAll @RunAs
![Page 36: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/36.jpg)
JSR-196 JASPIC を利用し自分で作りました
![Page 37: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/37.jpg)
https://github.com/yoshioterada/Java-EE-7-Authentication-App-for-AzureAD
GitHub にアップ済み
![Page 38: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/38.jpg)
Graph API : 認可で利用可能
OData 3.0 に準拠した RESTful API でユーザ・グループの参照・更新が可能
ユーザ操作例:https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/users-operationsグループ操作例:https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/groups-operations
![Page 39: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/39.jpg)
Azure ADBrowser Web App
authorize token graph
Call the Graph API
標準の JAX-RS Client を利用
![Page 40: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/40.jpg)
ためしたい方への設定手順
GitHub の画面手順に従い Azure AD を設定
![Page 41: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/41.jpg)
web.xml の修正
![Page 42: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/42.jpg)
Azure AD で作成したグループの ID をロールにマッピング
![Page 43: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/43.jpg)
AzureAD-Login { com.yoshio3.jaspic.AzureADLoginModule required;};
login.conf に下記を追加
※ Java EE 参照実装の GlassFish と Payara で動作確認済み
$GF_INSTALL/glassfish/domains/domain1/config/login.conf
![Page 44: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/44.jpg)
実装の詳細 ( ここから難しい )
![Page 45: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/45.jpg)
Java の認証の構成
Java SE : JAAS (Java Authentication and Authorization Service)
Java EE : Realm & Role
Java EE : JSR-196 JASPIC
クラ
イア
ント
サー
バサ
ーバ
![Page 46: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/46.jpg)
Azure ADBrowser Web App
authorize token graph
JASPIC ServerAuthModule で実装
![Page 47: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/47.jpg)
認証モジュールをコンテナに配置可能
![Page 48: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/48.jpg)
パッケージ名 概要
cdis ビューのバックエンド処理 (JSF)extensionofPF ビューのテーブル選択処理
entities Graph API の返り値のマッパー
graph Graph API を利用した処理
filter 認可が不要な場合 filter でも可能
jaspic 認証処理の主機能
common プログラム内から認証を有効化
認証モジュールを Web アプリに組み込み可能
![Page 49: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/49.jpg)
多要素認証でよりセキュアなアプリを !!Azure AD でシングル・サイン・オンも簡単
JASPIC で独自認証機能も実装可能
認証モジュールは一度作れば後が楽
認証モジュールだけの外だしも可能
まとめ
![Page 50: Java EE 7 multi factor authentiaction with Microsoft Azure AD](https://reader035.vdocuments.site/reader035/viewer/2022062302/5880abb71a28abf32c8b5585/html5/thumbnails/50.jpg)
© 2015 Microsoft Corporation. All rights reserved.