Azure Active Directory の Multi-Factor Authentication (MFA) の利用


開発者にとっての Microsoft Azure Active Directory

こんにちは。

Google アカウント などでもお馴染みの多要素認証 (multifactor authentication, MFA, または二要素認証) ですが、こちらのアナウンス にあったように、昨日、新 Office 365 の IdP でもある Azure Active Directory でも対応しました。
そこで、この Multi-Factor Authentication について、開発者目線で記載しておきたいと思います。
一見、開発者向けのネタではありませんが、こうした認証基盤が、開発者の皆さんが作成するカスタム アプリケーションでも容易に使用できます。

 

Multi-Factor Authentication (多要素認証, 二要素認証, MFA) の意義

まず、そもそも、この認証方式が何を目的としているのか超簡単に書いておきましょう。

よりセキュアな環境を提供するために、パスワード文字列を推測しずらいものに制限したり、定期的にパスワードを変更させるなどのセキュリティ対策が思いつくかもしれません。しかし、ショルダー ハックなどに代表されるように、結局、"情報" そのものの特性から逃げることはできず、「ばれてしまえば、皆、同じ」です。
一方、ここで紹介する多要素認証 (または、二要素認証) は、悪意のあるユーザーから見れば、例えば、「デバイスそのものを盗む」などの手段が必要で、別の次元の対策となっていることがおわかりいただけるでしょう。「認証方法が 1 つ増えただけ」ですが、例えば、パスワードを 2 つ入力させるような方法とは意義が異なるのです。
Azure Activre Directory ではデバイスを使った Multi-Factor Authentication (多要素認証) ですが、この他にも、Plain Text 認証と指紋認証の組み合わせなども Multi-Factor Authentication (多要素認証) の 1 つです。

 

Azure Active Directory における Multi-Factor Authentication の使用

この MFA は、Windows Azure Multi-factor Authentication Server を導入して On-premise 環境 (Windows Server) からも使用可能 (Web Service SDK によるプログラミングも可能) ですが、本稿では Cloud 環境 (Microsoft Azure) からの利用に絞って解説します。

Azure AD のユーザーに Multi-Factor Authentication を設定するには、Azure Portal 画面の Azure Active Directory の設定画面で、[Users and groups] メニュー、[All users] メニューをクリックして、上部の [Multi-Factor Authentication] をクリックします。

表示される画面で、多要素認証 (Multi-Factor Authentication) を有効化したいユーザーを選択して、[Enable] を選択することで、選択したユーザーで多要素認証が有効化されます。

MFA は、Web ブラウザーのクライアント (RP) などを使用して確認できます。例えば、Azure Portal へのログインや、Office 365 のテナントで SharePoint Online や Outlook Web App (https://pod51030.outlook.com/owa/?realm=<your O365 domain>) にログインする際などに、Multi-Factor Authentication の動作が確認できます。
初回、Multi-Factor Authentication を有効にしたユーザーでログインをおこなうと、下図の通り MFA の初期設定を促されます。(下図は、Office 365 にログインした際の画面です。)

上図の [Set it up now] ボタンを押して表示されるつぎの画面で、スマートフォンなどの電話番号の設定をおこないます。(下図では、[Send me a code by text message] を選択して SMS でメッセージを受け取るよう設定しています。)

以上で、設定完了です。
Azure Active Directory の Multi-Factor Authentication (多要素認証, MFA) は、Phone ベースの 2 要素認証 (two factor authentication, 2FA) であり、以下のいずれかの方法で受信可能です。(今回は、テキスト・メッセージを使用しています。)

  • 専用のモバイル・アプリ (Authenticator App) を使った受信
  • 電話による音声受信
  • テキスト・メッセージ (SMS) による受信

このユーザーで、Web アプリケーションの RP (SharePoint Online、Outlook Web App など) に ID とパスワードを入力してログインをおこなうと、設定した電話にコードの連絡が届きます。(下図は、SMS で着信・発信している例です。)

上図の通り、このコードを電話で返信すると、ブラウザー上でログインが可能になります。なお、その間、ブラウザー側は、下図の通り、待機されます。

 

既存のアプリケーション開発 (プログラミング) の留意点

前述の通り、この多要素認証 (二要素認証) は、「Azure Active Directory における Web SSO」で紹介したようなカスタム アプリケーション (SSO を使った RP) でも、問題なく使用できます。(試してみてください。) passive authentication の場合、いったん IdP のページに飛んでしまえば、あとは IdP 側の処理となるため (RP 側では、その結果を受け取るだけなので)、構築するカスタム アプリケーションにはいっさいの影響はありません。
影響を受けるのは、Web のログイン画面 (Web ブラウザー) 以外を使ってログインしているプログラムです。

実際、例えば、Office 365 の WS-Trust を使用して、Multi-Factor Authentication を構成しているユーザーでログインをおこなうと、現時点では、「Require strong authentication」の内部エラーが発生してログインできません。(WS-Trust を使ったプログラミングによる認証方法については、こちら を参照してください。) Office 365 の Outlook や Lync のような Rich client (Non-browser の client) も影響を受けます。
なお、こうしたクライアントの場合、App password と呼ばれるものを設定して、Rich client からログインする際に Multi-Factor Authentication を回避することも可能です。App password については、「TechNet : Managing your Windows Azure Multi-Factor Authentication User Settings」に記載されていますので参考にしてください。なお、App password の設定は、全体管理者の場合は不可能です。(PhoneFactor の採用により、こうした緊急時の迂回が可能になりました。)

 

Multi-Factor Authentication の拡張 (プログラミング)

例えば、Facebook では、普段している端末と異なる端末からアクセスした場合、Multi-Factor Authentication による本人確認をおこないます。Multi-Factor Authentication が PhoneFactor (Active Authentication) になったことで、プログラミング (SDK) による こうした Multi-Factor Authentication の呼び出し (拡張開発) が可能になりました。

このプログラミング方法 (コード サンプル) については、「Build Insider : Windows Azure の認証におけるその他サービス ~ Windows Azureモバイル・サービス、多要素認証」に掲載しましたので参考にしてください。現在、ASP.NET、Java、PHP、Ruby、Perl の SDK を提供しています。(SDK は、最終的に、XML の HTTP リクエストを PhoneFactor のサーバーに送信しています。)

 

実際、Cloud を使用した環境では、オンプレミスの Active Directory 以上に、こうした保護は軽視できないものとなってくるでしょう。Multi-Factor Authentication による検証は、Cloud の浸透と共に、今後は、さらに一般的になってくるかもしれませんね。

 

※ 変更履歴 :

2017/05/26  設定画面 (Azure Portal など) をすべて最新の画面に更新

Comments (0)

Skip to main content