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 つ入力させるような方法とは意義が異なるのです。
Windows Azure Activre Directory ではデバイスを使った Multi-Factor Authentication (多要素認証) ですが、この他にも、Plain Text 認証と指紋認証の組み合わせなども Multi-Factor Authentication (多要素認証) の 1 つです。

 

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

追記 : Windows Azure Active Directory の Multi-Factor Authentication では、PhoneFactor が使用されるようになりました。
一般のユーザーで Multi-Factor Authentication を使用するには、下記の前に、あらかじめ、Windows Azure ポータルから、Active Directory の [Multi-Factor Auth Providers] のタブを選択してサーバーの設定をおこなってください。(設定方法の詳細は、Active Directory Team Blog を参照してください。)
なお、Global Administrator で Multi-Factor Authentication を使用する場合、このプロバイダーの設定は不要です。(無償で使用できます。)

TechNet : Using multi-factor authentication with Windows Azure AD」に記載しているように、現在、MFA を使用するには、いくつかの制限があるので注意してください。(後述しますが、現在は、Web ベースのクライアントからのみ使用可能です。Outlook などのリッチ・クライアントからは使用できません。)
また、この MFA は、Windows Azure Multi-factor Authentication Server を導入して On-premise 環境 (Windows Server) からも使用可能 (Web Service SDK によるプログラミングも可能) ですが、本稿では Cloud 環境 (Windows Azure) からの利用に絞って解説します。

Multi-Factor Authentication を使用するには、Windows Azure ポータル画面の Active Directory の設定画面で Windows Azure Active Directory のテナントを作成し、テナントのユーザー作成時に、下図のように、[多要素認証が必要です] (Require multifactor autehntication) というチェックボックスが表示されるので、これをチェックします。

この MFA は、Web ブラウザーのクライアント (RP) を使用して確認できます。例えば、Windows 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 の設定を促されます。ボタンを押して、初期設定を開始します。

上図のボタンを押して表示されるつぎの画面で、スマートフォンなどの電話番号の設定をおこないます。(SMS でメッセージを受け取る場合は、下図で、[電話ではなくメッセージで連絡] を選択します。)

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

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

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

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

 

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

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

影響を受けるのは、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 の浸透と共に、今後は、さらに一般的になってくるかもしれませんね。

Comments (0)

Skip to main content