ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

Entra ID の新機能「外部 MFA」

Entra ID でログインを行い、追加の認証(MFA)だけ外部に手伝ってもらいます。
これが Entra ID の新機能「外部 MFA」です。

ライター:渥美 淳一
セキュリティアーキテクト。「ID で守り、ID を守る」がセキュリティの本質であり、未来への入り口だと考えている。

目次

できること

Entra ID で使える認証方法として、外部 MFA を追加できます。

これはログインを外部に丸投げする SAML と違い、Entra ID がログインの責任者のまま、追加の認証だけを外部 MFA に手伝ってもらう仕組みです。

メリット

前提条件

  • Entra ID P1(または P2)ライセンスが必要

動作フロー

Entra ID は OpenID Connect を使い、従業員を外部 MFA へ誘導(リダイレクト)して追加の認証を要求します。

1. 従業員が業務アプリにアクセス
2. Entra ID のログイン開始
3. Entra ID が認証(ID やパスワードなど)
4. 条件付きアクセスにより従業員を外部 MFA にリダイレクト
5. 外部 MFA が追加の認証(プッシュ通知など)
6. 外部 MFA が「認証成功」を応答
7. Entra ID が「認証成功」を確認
8. Entra ID のログイン成功(業務アプリ向けトークン発行)
9. 業務アプリにシングルサインオン成功

Cisco Duo を外部 MFA にする

Cisco Duo(以下 Duo)は、VPN の MFA として昔から人気です。VPN の MFA は Duo で、Office 365 の MFA は Microsoft Authenticator で、といったように、用途ごとにスマホアプリを使い分ける場合がありますが、これは従業員にとって面倒です。

ひとつのスマホアプリで統一できるのが理想です。
Duo を Entra ID の外部 MFA にすれば、それを実現できます。

どういうときに使う?

VPN を使う従業員(Active Directory のユーザー)は、すでに Duo で MFA を行っています。Microsoft 365 でも同じ Duo で MFA を行いたいときに外部 MFA を使います。

設定

Duo アプリケーション「Microsoft Entra ID: External MFA」を追加します。

Duo が協力することを Entra ID 側で「Authorize」(許可)します。

Entra ID 管理者でログインします。

組織の代理として同意して「承諾」します。

Entra ID 側にもエンタープライズ アプリが自動でつくられます。

このエンタープライズ アプリが Duo の協力を許可します。

自動的に Duo アプリケーション設定画面に戻ります。
Duo に MFA させたい従業員のグループ(今回は VPN)を選んで保存します。

Details の値をコピーしておきます。
Entra ID の「+外部 MFA の追加」に必要です。

Entra ID で「+外部 MFA の追加」します。

コピーしておいた Duo アプリケーションの Details の値を貼り付けて有効化します。
Duo に MFA させたい従業員のグループ(今回は VPN)をターゲットにします。

解説

  • クライアント ID
    Duo アプリケーションの Client ID

  • 検出エンドポイント
    Duo の Discovery Endpoint の URL
    (MFA 要求先を教えてくれる URL)

  • アプリ ID
    Entra ID 側につくられたエンタープライズ アプリの ID

外部 MFA が追加されました。

条件付きアクセス設定します。
Duo に MFA させたい従業員のグループ(今回は VPN)を対象にします。

Duo に MFA させたいアプリ(今回は Office 365)をターゲットリソースにします。

アクセスを許可し、ポリシーを有効化します。
「アクセス権の付与」の「多要素認証を要求する」を選択します。

動作確認

従業員は Office 365 にアクセスします。
Entra ID ログイン画面になります。

ユーザー名を入力

パスワードを入力して「サインイン」

本人確認を行う設定をするため「次へ」

「別のサインイン方法を設定してください」

「External MFA」

Duo を使用してサインインするため「次へ」

スマホアプリに Duo Push が届くので「承認」

「はい、これは私のデバイスです」

Duo を使用してサインインできるようになりました。

サインインの状態を維持しますか?「はい」

ログイン成功

これにより、従業員は Duo で MFA できるようになります。

MFA の通信の流れ

Entra ID は従業員(ブラウザ)経由で Duo に MFA 要求します。
MFA 要求先は、前述の「Duo の Discovery Endpoint の URL」に書かれています。

POST https://ane1.azureauth.duosecurity.com/authorization
scope: OpenID Connect の認証を要求します response_mode: 結果は POST で返してください response_type: 結果は id_token で返してください client_id: 要求している Entra ID 外部 MFA の ID です redirect_uri: 結果はこの URL に返してください claims: この強さ(acr)と種類(amr)の MFA をお願いします nonce: なりすましを防ぐため、この値もいっしょに返してください id_token_hint: この従業員の情報をもとに MFA を行ってください

MFA 要求に含まれる id_token_hint に従業員の情報が入っています。

{
  "aud": id_token を要求する Entra ID,
  "iss": この id_token_hint を発行した Entra ID,
  "iat": この id_token_hint の発行日時,
  "nbf": この id_token_hint の利用開始日時,
  "exp": この id_token_hint の利用終了日時,
  "name": "渥美 淳一",
  "oid": Entra ID が管理する従業員 ID,
  "preferred_username": "atsumi@nosbiz.biz",
  "sub": 認証したい従業員の ID,
  "tid": Entra ID テナントの ID,
  "upn": "atsumi@nosbiz.biz",
  "uti": Entra ID トランザクションの ID,
  "ver": この id_token_hint のバージョン(Entra ID では 2.0 が主流)
}

Duo は MFA を行い、その結果を従業員(ブラウザ)経由で Entra ID に応答します。

POST https://login.microsoftonline.com/common/federation/externalauthprovider
token_type: Bearer(持っている人が使える)タイプのトークンです id_token: その従業員の MFA に成功しました expires_in: この id_token の有効期限は 300 秒です

Duo の応答に含まれる id_token が、MFA 成功の証明です。

{
 "iss": この id_token を発行した Duo,
 "sub": MFA に成功した従業員の ID(id_token_hint の sub と同じ),
 "aud": id_token を要求した Entra ID,
 "exp": id_token の有効期限,
 "iat": id_token の発行日時,
 "nonce": なりすましを防ぐために最初にもらった値,
 "DuoMfa": "MfaDone"(MFA 成功),
 "acr": "possessionorinherence",
 "amr": [
   "pop"
 ]
}

MFA の強さ(acr)と種類(amr)

  • acr(Authentication Context Class Reference)
    所持(possession)や生体(inherence)という強い認証を使用

  • amr(Authentication Methods Reference)
    スマホ所持で証明する pop(Proof of Possession)

結果、Entra ID は「どの程度強い MFA か」「どんな MFA か」がわかります。
これが Entra ID の外部 MFA です。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND