クラウドで簡単MFA!Azure AD B2C編(前編)

クラウドで簡単MFA!Azure AD B2C編(前編)

クラウドの普及によりWebサービスの提供が容易になったことで、IT関連ビジネスを生業とする企業だけではなく、さまざまな業種・業界の事業者が顧客向けにオンラインサービスを提供するようになりました。

オンラインサービスを提供する上で避けて通れない課題となるのは、ログイン認証などのセキュリティへの配慮ではないでしょうか。

近年では、不正アクセスを防ぐ観点から、セキュリティ強度の低い「パスワード認証」の問題を解消するために「二段階認証」や「多要素認証(MFA)」と呼ばれるログイン認証を強固にする仕組みを導入するサービスが増加しています。

本ブログでは、そのようなログイン認証の強化について、Microsoft Azureで提供されいているサービスである「Azure Active Directory B2C(Azure AD B2C)」を利用して構築する方法についてご紹介します。

Azure AD B2Cとは?

Azure AD B2Cは、顧客向けのオンラインサービスに対してID管理やログイン認証の機能を提供する、「CIAM」というカテゴリに分類されるアプリケーションです。

オンラインサービスを提供する事業者は、Azure AD B2Cによって、顧客自身によるID情報の登録(セルフサインアップ)や変更(セルフメンテナンス)、安全なログイン認証、シングルサインオンなどのB2Cサービスに必要な機能をすぐに使い始めることができます。

ログイン認証については、多要素認証(MFA)やソーシャルIDによる認証も「ユーザーフロー」と呼ばれる標準機能で利用できるので、高度な認証を設定のみで利用することができます。標準で利用できるMFAは以下の4種類です。

Azure AD B2Cのユーザーフローで利用可能なMFAの種類
MFAの種類 説明
メール 事前に登録されたeメールアドレスに対して送信されるVerification Code(認証コード)を入力する方式。フィッシング詐欺への耐性が不十分なため、セキュリティ強度としては最も低い。
SMS 事前に登録された電話番号に対してSMSで送信されるVerification Code(認証コード)を入力する方式。MFA試行のたびに定額料金 $0.03 が請求される。
通話 事前に登録された電話番号に対する電話に応答し、自動音声に従って認証を完了する方式。MFA試行のたびに定額料金 $0.03 が請求される。
Authenticatorアプリ(TOTP)  Google AuthenticatorやMicrosoft Authenticatorなどのアプリを利用して認証コードを入力する方式。

なお、Microsoft Azureには、主に企業内のIDを管理する用途で利用される「Azure Active Directory(Azure AD)」というディレクトリサービスがあります。Azure AD B2CはAzure ADから派生したサービスであり、機能や設定項目に共通項が多いため混同されてしまう方もいらっしゃるかもしれませんが、基本的には「Azure AD」 と「Azure AD B2C」は異なるサービスであると覚えておいたほうが良いでしょう。
(※Azure ADは2023年7月にMicrosoft Entra IDに名称変更されました。なお、Azure AD B2Cの名称については現時点では変更しない方針のようです。)

 また、クラウドを利用する上で気になる料金体系などのコスト感ですが、Azure AD B2Cは、基本機能のみであれば50,000MAUまでは無料で利用することができます。

MAUは課金方式の一種で、月間アクティブユーザーを意味します。つまり、もしテナントに5万人以上のユーザーが登録されていたとしても、1ヶ月にログインするユーザーが5万人以内であれば無料で利用することができます。ただし、MFAの機能としてSMSを利用する場合は別途従量料金が掛かるのでご注意ください。

Azure AD B2C料金の詳細については公式サイトの価格ページをご確認ください。

Azure AD B2Cを使ってMFA環境を構築する手順について、このコラムでは以下の流れで詳しくご紹介していきます。途中でいろいろな解説を含むため文章のボリュームは多めになりますが、慣れてしまえば30分程度で構築できる手順です。

  1. B2Cテナントの構築
  2. アプリケーションの登録と設定
  3. ユーザーフローの作成
  4. ユーザーフローの編集(日本語化)
  5. ユーザーフローの実行

1. B2Cテナントの構築

テナントの作成

まずは、Azure AD B2Cの本体であるB2Cテナントを構築していきます。初めてMicrosoft Azureを使う場合は、テナント構築の前に無料アカウントを作成する必要がありますが、ここではアカウント作成の手順は省略します。アカウント作成後にAzure Portalにログインすると、以下のような画面(Azureホーム)が表示されます。

初回アクセス時は、「ツアーの開始」を選択できるダイアログが表示されます。すぐ終わる簡易な画面操作の説明ですので、初めての方はツアーを動かしてみるのも良いでしょう。

上記の画面で、「リソースの作成」を選ぶと、以下の画面が表示されます。左メニューから「ID」を選び、表示された画面から「Azure Active Directory B2C」を選択します(検索窓で「B2C」と入力すると探しやすくなります)。

次に、以下の画面が表示されるので、「新しいB2Cテナントを作成する」を選択してください。

下記の画面から、作成するB2Cテナント(ディレクトリ)についての情報を入力していきます。

組織名」はAzure Portal等で利用される表示名なのでわかりやすい名前をつけましょう。日本語も利用可能です。

初期ドメイン名」は英数字のみで記号が使えないので注意しましょう。こちらはURLとして使われる場合もあるので、英大文字は使わないほうが無難です。

国/地域」はデータの保存場所を指定します。データの所在について特別な要件が無ければ「日本」を選択すればよいでしょう。お試しであれば初期値の「米国」のままでも問題ありません。

リソースグループ」は適当な名前で新規作成をしておけば大丈夫です。「リソースグループの場所」についても適当で構いません(リソースグループのメタデータを格納する場所の指定なので、個別リソースのロケーションには影響しません)。

設定後に「確認および作成」を選択し、問題が無ければ以下のように「検証に成功しました。」というメッセージが表示されます。

もう一度「作成」ボタンを押せばテナントの作成が開始されます。

上記の画面に表示されているメッセージのとおり、テナントの作成には数分かかります。作成が終わると以下のように画面が変化します。

上記画面で「ここをクリックします」を選ぶと、以下のようなB2Cテナントの管理画面が表示されます。

B2Cテナント操作の落とし穴

ここまでの手順でB2Cテナントを作成することができました。テナントの操作についてはいくつか注意点があるのでここでまとめておきます。

落とし穴その1:テナント作成時のエラー

初回テナント作成で、 サブスクリプションが名前空間 'Microsoft.AzureActiveDirectory'を使用する用に登録されていません。というエラーが出た場合は、「リソースプロバイダー」の設定から該当の「Microsoft.AzureActiveDirectory」というプロバイダーを登録する必要があります。具体的な手順はこちらの記事(※個人ブログのサイトに移動します)が参考になります。

落とし穴その2:B2Cテナント画面への戻り方

B2Cテナントの管理画面で「ホーム」を選んだ場合や、再ログインした場合などはAzureホーム画面に戻りますが、ここからB2Cテナントの管理画面に移動するのが案外難しかったりします。

また、今回新たにB2Cテナントを作成したことで、画面上部青色メニューのアイコンを操作して表示する「ディレクトリとサブスクリプション」画面では、初めから存在する「既定のディレクトリ」とB2Cテナントを示すディレクトリの間を移動する操作が可能になりますが、このディレクトリ切り替えに関する操作も、慣れるまでは混乱する可能性がありますので、念のため操作方法を以下にまとめておきます。

状態 操作
ディレクトリとサブスクリプション」画面から直前の画面に戻りたい 画面上部青色のメニューの「設定」アイコン(①)をクリックするか、右上の「×」(②)をクリックして「ディレクトリとサブスクリプション」画面を閉じる)
Azureホーム画面などからB2Cテナントの管理画面に進みたいが、現在のディレクトリが不明 一旦「ディレクトリとサブスクリプション」画面を表示し、「現在のディレクトリ」(③)を確認した上で下記いずれかの操作を行う
現在のディレクトリ」が対象のB2Cテナントの状態で、B2Cテナントの管理画面に進みたい

画面上部の青色の検索窓(④)などで「Azure AD B2C」サービスを探して選択する(同じ形の「B2Cテナント」というアイコンは選ばない

現在のディレクトリ」が対象のB2Cテナントではない状態(「既定のディレクトリ」など)で、B2Cテナントの管理画面に進みたい

ディレクトリとサブスクリプション」画面から対象のB2Cテナントへの「切り替え」を選択する(⑤)

2. アプリケーションの登録と設定

アプリケーションの登録

B2Cテナントを作成したら、次にB2Cテナントに接続するWebサービスの情報を設定します。Azure AD B2Cでは、Microsoftによって用意されたデモサイトを使うことで、実際のアプリケーションを用意しなくてもユーザー登録(Sign up)やユーザー認証(Sign in)を動かせるようになっていますので、一旦デモサイトで動作を確認すると良いでしょう。基本的には公式のチュートリアルのとおり進めれば大丈夫です。

まずはB2Cテナント管理画面の左のメニューから「アプリの登録」を選び、表示される以下の画面から「新規登録」を選びます。

以下の画面が表示されるので、アプリケーションの登録に必要な情報を入力していきます。

名前」はAzureポータル上の表示名なので任意の名前を指定してください。

サポートされているアカウントの種類」は初期値のままでOKです。今回のようなユーザー認証用途のアプリケーションであればこちらの選択肢を選んでください。

リダイレクトURI」は、プルダウンメニューから「Web」を選び、テキスト部分にMicrosoftが用意したデモサイトである「https://jwt.ms」を入力します。この項目は、認証結果をアプリケーションに返却するエンドポイント(ブラウザからのリダイレクト先)を設定するもので、https://jwt.msは認証結果として取得したトークン情報を画面に表示してくれるサイトです。

アクセス許可」は初期値であるOnのままで大丈夫です。この項目は、認証結果としてアプリに渡す情報を取得するために必要なMicro Graph APIへのアクセスを許可するためのものなので、ユーザー認証用途のアプリの場合はOnにする必要があります

登録」を選びアプリケーションの登録に成功すると、登録されたアプリケーションの概要ページが表示されます。

アプリの登録は簡単に終わりましたが、ここで、MFAの動作確認をするための下準備として追加の設定が2点必要となります。

APIアクセス許可の追加設定

こちらは、B2Cテナント作成後に初めてアプリを登録した場合にのみ必要な手順です。

アプリケーション画面の左メニューから「APIのアクセス許可」を選び、表示された画面中央部の「●●(テナント名)に管理者の同意を与えます」という部分を選択してください。

選択するとダイアログが表示されるので「はい」を選択してください。

同意が付与され、一覧の「状態」にチェックが入ります。

こちらの設定は、後に設定する「ユーザーフロー」の中で呼び出すMicrosoft GraphのAPIに対して、該当のB2Cテナントからアクセスするための権限を与えるという意味を持ちます。テナントに対する許可なので、一度設定してしまえば他のアプリに対しては自動的に反映されます。

先ほどアプリの作成時にも「アクセス許可」を有効にしたので、この作業は二度手間に感じるかもしれませんが、アプリからAPIを利用する場合はその親リソースであるテナントにも権限を与えておく必要があると考えていただけば良いと思います。

アクセストークンとIDトークンの発行に関する設定

次に、デモ用のサイト(https://jwt.ms)を使う場合に必要な設定を追加します。

アプリケーション画面の左メニューから「認証」を選び、「暗黙的な許可およびハイブリッドフロー」という項目の2つのチェックボックスをOnにして、「保存」を選択してください。

この設定により、Azure AD B2Cからブラウザに返却される認証応答に「アクセストークン」と「IDトークン」が含まれるようになります。

本番のWebアプリとの連携では、多くの場合「認可コードフロー」と呼ばれる仕組みを使うため、このような設定は必要ありませんが、今回はデモ用のサイト(https://jwt.ms)でトークンを画面に表示するためにこの設定を追加します。


B2Cテナントの作成とアプリケーションの登録までの流れをご紹介しました。この後はMFA機能の設定を含む「ユーザーフロー」の作成や実行の手順をご紹介する予定ですが、長くなりましたのでここで一旦区切りたいと思います。続きは、「クラウドで簡単MFA!Azure AD B2C編(後編)」をご覧ください。

また、Azure AD B2Cの構築や、連携するアプリケーションの開発についてご相談がございましたら、NTTテクノクロスまでお気軽にご相談ください!

合わせて読みたい