【開発者歓迎】 多要素認証 Deep Dive...
Transcript of 【開発者歓迎】 多要素認証 Deep Dive...
The Microsoft Conference 2014
ROOM E
本セッションの資料について
• 本セッションの資料と映像を後日オンラインにて公開予定です。
• 掲載時期につきましては、追って事務局からのメールにてご案内させていただきます。
多要素認証とは
本人が知っていること 本人が確実に持っているもの
Smart
card
Smart
PhonePC
本人の特性など
場所行動履歴
第三者による認証
IDPass
word
秘密の質問
生体情報
多要素=多手間ではない
友達かどうか
5
Windows Server AD
Azure Active Directory
業務データ
社員
多要素認証プロバイダー(MFA Provider)
モバイルデバイス
Microsoft Azure AD
MFA Provider
+
6
Windows Server AD
Azure Active Directory
業務データ
社員
多要素認証プロバイダーはADFS からも呼び出せる
モバイルデバイス
Microsoft Azure AD
MFA Provider
+
Azure MFA Server on AD FS• AD FS から Azure MFA プロバイダーを直接呼び出すためのサービス
• 以下からダウンロード
• https://pfweb.phonefactor.net/framefactory
• 細かな条件設定が可能Microsoft Azure AD
MFA Provider
MFA Server
add in
①
②
③
④
⑤
⑥ ⑦
⑧⑨
AD FSのMFA実施条件設定画面
クレームルールを作成すれば、さらに柔軟な判定が可能
モバイルデバイスが、Active Director にデバイス登録されているかどうかの判定
Active Directory のグループに所属しているかどうか
ユーザーがFirewallの外からアクセスしているかどうか
条件がすべて満たされたらMFAを実施
カスタム認証プロバイダーの実装例
Mobile
Services
12345
スマートフォン
RegistrationsAuthentication
Push Channel PIN
PIN
URI,
Device ID
Point1: Push Notification
Push Channel
Open "Notification Channel"
Ch
an
nel U
RI
new HttpNotificationChannel(channelName);
http://s.notify.live.net/u/1/sin/HmQAAADDuqfybK-
s78jIPVRxxOcDjiJyRdT5AnKbdhhHJfxl63Az266wcD2Hb
QhrcgJT6zyG3nlkCvT4XBP7R-
X9xfoE/d2luZG93c3Bob25lZGVmYXVsdA/QSX_vdQXKU
m4Ttff9DP9cw/cB50haQGCYeaYD139zcPDSQTeX4
Application
URIを知らせる
Message
Push
Point2: Azure Mobile Service
Mobile
Services
RegistrationsAuthentication
Insert PIN
JQuery JQuery
• Insert
• Update
• Delete
• Read
• Insert
• Update
• Delete
• Read
Push Channel
SendToast
InsertDeviceID
Exe
cute
()
function insert(item, user, request) {
request.execute({
success: function() {
request.respond();
sendNotifications(item);
}
});
function sendNotifications(item) {
var registrationsTable =
tables.getTable('Registrations');
registrationsTable.where({
deviceid: item.deviceid
}).read({
success: function(registrations) {
registrations.forEach(function(registration) {
console.log("Handle--" ,registration.handle)
console.log("DeviceID--" ,item.deviceid)
console.log("DeviceID--" ,item.text)
console.log("DeviceID--" ,item.pin)
push.mpns.createNativeRegistration(registration.handle,re
gistration.id)
push.mpns.sendToast(registration.id,
{
text1: item.text,
text2: item.pin
}, {
success: function(pushResponse)
{console.log("Sent push:", pushResponse);}
}
);
});
}
});
}
}
Authentication テーブルの Insertトリガー
Point3:デバイスとユーザーのマッピング
所有
ldap query
(&(objectClass=user)(objectCategory=person)(userPrincip
alName=" + upn + "))"
Point4: PINの生成と比較
ランダムな
PINを生成
Mobile
Services
Authentication
PINをストア
PINの入力ページを表示
入力された PIN をその場で比較(Hiddenに格納するとか)するのは危険
比較
転記
ブラウザ画面
Registrations
作成したプロバイダーを AD FSに登録するには
PS C:¥> Set-location C:¥MyAuthenticationProvider
PS C:¥>[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a")
PS C:¥> $publish = New-Object System.EnterpriseServices.Internal.Publish
PS C:¥> $publish.GacInstall("C:¥MyAuthenticationProvider¥MyAuthenticationProvider.dll")
#$publish.GacRemove("C:¥MyAuthenticationProvider¥MyAuthenticationProvider.dll")
PS C:¥> $PublicKeyToken = "06419d7515549bf5"
PS C:¥> $typeName = "MyAuthenticationProvider.AuthenticationAdapter, MyAuthenticationProvider, Version=1.0.0.0, PS
Culture=neutral, PublicKeyToken=$PublicKeyToken"
PS C:¥> Register-AdfsAuthenticationProvider -TypeName $typeName -Name "MyAuthenticationProvider" -Verbose
#Unregister-AdfsAuthenticationProvider -Name "MyAuthenticationProvider"
"C:¥Program Files¥Multi-Factor Authentication Server¥Register-MultiFactorAuthenticationAdfsAdapter.ps1"
Windows PowerShell を使用する
SNコマンドで公開キーを取得
SN -T "D:¥Visual Studio Projects¥....¥...¥bin¥Debug¥MyAuthenticationProvider.dll"
• AD FS はシングルサインオンのために存在するのではありません。企業のアクセスコントロールエンジンです
• 追加認証プロバイダーはAD FS のアドインとして比較的簡単に開発できます。
• 社内リソースは AD FS に集約し、アクセス制御の柔軟性を向上させましょう。
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on
the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.