【開発者歓迎】 多要素認証 Deep Dive...

25
The Microsoft Conference 2014 ROOM E 【開発者歓迎】 多要素認証 Deep Dive 日本マイクロソフト株式会社 エバンジェリスト 安納 順一

Transcript of 【開発者歓迎】 多要素認証 Deep Dive...

The Microsoft Conference 2014

ROOM E

【開発者歓迎】多要素認証 Deep Dive

日本マイクロソフト株式会社

エバンジェリスト

安納順一

The Microsoft Conference 2014

ROOM E

アンケートにご協力ください。

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を実施

証明書 OTP 携帯電話 IM

証明書 OTP 携帯電話 IM

アクセスコントロールサービス

証明書 OTP 携帯電話 IM

LOBにアクセスするための条件を確認・必要な認証の種類・業務に渡す情報

トークン

証明書 OTP 携帯電話 IM

AD FS

AD DS

ldap

SQLSV

トークン

証明書 OTP 携帯電話 IM

Azure多要素認証プロバイダー証明書認証プロバイダー

サポートされている認証プロバイダーとクレームストア

Custom(要開発)

認証要素

その他(要開発)

• Oracle

• テキスト

など

カスタム認証プロバイダー

独自に認証プロバイダを開発し、AD FS のアドインとして登録可能

カスタム認証プロバイダーの実装例

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.