既存のネットワーク ポリシー サーバー (NPS) インフラストラクチャと Microsoft Entra MFA の統合

Microsoft Entra MFA のネットワーク ポリシー サーバー (NPS) 拡張機能は、既存のサーバーを使用してクラウド ベースの MFA 機能を認証インフラストラクチャに追加します。 NPS 拡張機能を使用すると、新しいサーバーをインストール、構成、管理することなく、電話、テキスト メッセージ、またはモバイル アプリによる検証を既存の認証フローに追加できます。

NPS 拡張機能は、RADIUS とクラウド ベース Microsoft Entra MFA の間のアダプターとして機能し、認証の 2 番目の要素をフェデレーション ユーザーまたは同期済みユーザーに提供します。

NPS 拡張機能のしくみ

Microsoft Entra MFA の NPS 拡張機能を使用する場合、認証フローには次のコンポーネントが含まれます:

  1. NAS/VPN サーバー: VPN クライアントから受信した要求を RADIUS 要求に変換して NPS サーバーに送信します。

  2. NPS サーバー: Active Directory Domain Service (AD DS) に接続して RADIUS 要求のプライマリ認証を行います。成功したら、インストール済みの任意の拡張機能に要求を渡します。

  3. NPS 拡張機能: セカンダリ認証のために Microsoft Entra MFA への要求をトリガーします。 応答を受信したら、MFA チャレンジが成功していた場合は、Azure STS が発行した MFA クレームを含むセキュリティ トークンを NPS サーバーに提供して認証要求を完了します。

    注意

    NPS では数値の一致をサポートしませんが、最新の NPS 拡張機能では、Microsoft Authenticator で使用できる TOTP など、時間ベースのワンタイム パスワード (TOTP) 方式をサポートします。 TOTP サインインでは、代替の [承認]/[禁止] のエクスペリエンスより優れたセキュリティを実現します。

    2023 年 5 月 8 日以降、すべてのユーザーに対して数値の一致が有効になっている場合、NPS 拡張機能バージョン 1.2.2216.1 以降との RADIUS 接続を実行するユーザーは、代わりに TOTP 方式でサインインするように求められます。 この動作を得るには、ユーザーは TOTP 認証方法を登録する必要があります。 TOTP 方式を登録していないユーザーには、引き続き [承認]/[禁止] が表示されます。

  4. Microsoft Entra MFA は、Microsoft Entra ID と通信してユーザーの詳細を取得し、ユーザーに構成されている検証メソッドを使用してセカンダリ認証を実行します。

次の図に、この認証要求フローの概要を示します。

VPN サーバーを介して NPS サーバーと Microsoft Entra MFA の NPS 拡張機能に対して認証を行うユーザーの認証フローの図

RADIUS プロトコルの動作と NPS 拡張機能

RADIUS は UDP プロトコルであるため、送信側はパケット損失を想定し、応答を待機します。 一定の時間が経過すると、接続がタイムアウトする場合があります。その場合、送信側はパケットが送信先に届かなかったと想定してパケットを再送信します。 この記事の認証シナリオでは、VPN サーバーが要求を送信し、応答を待機します。 接続がタイムアウトした場合、VPN サーバーは要求を再度送信します。

NPS サーバーからの応答のタイムアウト後の RADIUS UDP パケット フローと要求の図

NPS サーバーは、MFA 要求がまだ処理されている可能性があるため、接続がタイムアウトする前は、VPN サーバーの元の要求に応答できません。 ユーザーが MFA プロンプトに正常に応答しなかった可能性があります。そのため、Microsoft Entra MFA の NPS 拡張機能は、そのイベントが完了するのを待機しています。 この場合、NPS サーバーでは、追加の VPN サーバー要求が複製要求と識別されます。 NPS サーバーでは、これらの重複する VPN サーバー要求が破棄されます。

RADIUS サーバーからの複製要求を破棄する NPS サーバーの図

NPS サーバーのログを見ると、これらの追加の要求が破棄されている可能性があります。 この動作は、エンド ユーザーが 1 回の認証試行に対して複数の要求を取得できないようにするための仕様です。 NPS サーバーのイベント ログの破棄された要求は、NPS サーバーまたは Microsoft Entra MFA の NPS 拡張機能に問題があることを示すものではありません。

破棄される要求を最小限に抑えるには、VPN サーバーを少なくとも 60 秒のタイムアウトで構成することをお勧めします。 必要に応じて、またはイベント ログの破棄された要求を減らすために、VPN サーバーのタイムアウト値を 90 秒または 120 秒に増やすことができます。

この UDP プロトコルの動作により、NPS サーバーは、ユーザーが最初の要求に応答した後でも複製要求を受信し、別の MFA プロンプトを送信する可能性があります。 このタイミング条件を回避するために、Microsoft Entra MFA の NPS 拡張機能は、正常な応答が VPN サーバーに送信されてから最大 10 秒間、複製要求をフィルター処理して破棄し続けます。

正常な応答が返されてから 10 秒間、VPN サーバーからの複製要求を破棄し続ける NPS サーバーの図

この場合も、Microsoft Entra MFA プロンプトが正常に終了したにも関わらず、NPS サーバーのイベント ログには破棄された要求がある可能性があります。 これは予期される動作であり、NPS サーバーまたは Microsoft Entra MFA の NPS 拡張機能に問題があることを示すものではありません。

デプロイを計画する

NPS 拡張機能は、自動的に冗長性を処理するため、特別な構成は不要です。

Microsoft Entra MFA 対応の NPS サーバー を必要な数だけ作成できます。 複数のサーバーをインストールする場合、サーバーごとに異なるクライアント証明書を使用する必要があります。 サーバーごとに証明書を作成することは、各証明書を個別に更新でき、すべてのサーバー全体でのダウンタイムを心配しなくてもよいことを意味します。

VPN サーバーは認証要求をルーティングするため、新しい Microsoft Entra MFA 対応の NPS サーバーを認識する必要があります。

前提条件

NPS 拡張機能は、既存のインフラストラクチャで使用します。 開始する前に、以下の前提条件を確認してください。

ライセンス

Microsoft Entra MFA 用の NPS 拡張機能は、(Microsoft Entra ID P1 と Premium P2 または Enterprise Mobility + Security に含まれる) Microsoft Entra MFA のライセンスをお持ちのお客様が利用できます。 Microsoft Entra MFA の従量課金ベースのライセンス (ユーザーごとのライセンス、認証ごとのライセンスなど) は、NPS 拡張機能に対応していません。

ソフトウェア

  • Windows Server 2012 以降。 Windows Server 2012 はサポートが終了していることに注意してください。

  • Microsoft Graph PowerShell モジュールには、.NET Framework 4.7.2 以降が必要です。

  • PowerShell バージョン 5.1 以降。 PowerShell のバージョンを確認するには、次のコマンドを実行します。

    PS C:\> $PSVersionTable.PSVersion
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      1      16232  1000
    

ライブラリ

  • Visual Studio 2017 C++ 再頒布可能パッケージ (x64) は、NPS 拡張機能インストーラーによってインストールされます。

  • セットアップ プロセスの一環として実行する構成スクリプトによって、Microsoft Graph PowerShell もインストールされます (まだ存在しない場合)。 モジュールを事前にインストールする必要はありません。

ディレクトリ テナント ID を取得する

NPS 拡張機能の構成の一環として、管理者資格情報と Microsoft Entra テナントの ID を入力する必要があります。 テナント ID を取得するには、次の手順のようにします。

  1. Microsoft Entra 管理センターグローバル管理者以上の権限でサインインします。

  2. [ID]>[設定] の順に進みます。

    Microsoft Entra 管理センターからテナント ID を取得する

ネットワークの要件

NPS サーバーは、TCP ポート 443 を使って次の URL と通信できる必要があります。

  • https://login.microsoftonline.com
  • https://login.microsoftonline.us (Azure Government)
  • https://login.chinacloudapi.cn (Microsoft Azure operated by 21Vianet)
  • https://credentials.azure.com
  • https://strongauthenticationservice.auth.microsoft.com
  • https://strongauthenticationservice.auth.microsoft.us (Azure Government)
  • https://strongauthenticationservice.auth.microsoft.cn (Microsoft Azure operated by 21Vianet)
  • https://adnotifications.windowsazure.com
  • https://adnotifications.windowsazure.us (Azure Government)
  • https://adnotifications.windowsazure.cn (Microsoft Azure operated by 21Vianet)

さらに、指定された PowerShell スクリプトを使用してアダプターの設定を行うには、次の URL への接続が必要です。

  • https://onegetcdn.azureedge.net
  • https://login.microsoftonline.com
  • https://provisioningapi.microsoftonline.com
  • https://aadcdn.msauth.net
  • https://www.powershellgallery.com
  • https://go.microsoft.com
  • https://aadcdn.msftauthimages.net

次の表では、NPS 拡張機能に必要なポートとプロトコルについて説明します。 TCP 443 (受信および送信) は、NPS 拡張機能サーバーから Entra ID に必要な唯一のポートです。 アクセス ポイントと NPS 拡張サーバーの間には RADIUS ポートが必要です。

プロトコル Port 説明
HTTPS 443 Entra ID に対するユーザー認証を有効にします (拡張機能をインストールするときに必要)
UDP 1812 NPS による RADIUS 認証の一般的なポート
UDP 1645 NPS による RADIUS 認証の一般的でないポート
UDP 1813 NPS による RADIUS アカウンティングの一般的なポート
UDP 1646 NPS による RADIUS アカウンティングの一般的でないポート

環境を準備する

NPS 拡張機能をインストールする前に、認証トラフィックを処理するように環境を準備してください。

ドメインに参加しているサーバーで NPS 役割を有効にする

NPS サーバーは、Microsoft Entra ID に接続し、MFA 要求を認証します。 この役割に対して 1 台のサーバーを選択します。 NPS 拡張機能は RADIUS でないすべての要求に対してエラーをスローするため、他のサービスからの要求を処理しないサーバーを選択することをお勧めします。 NPS サーバーを、環境のプライマリおよびセカンダリ認証サーバーとしてセットアップする必要があります。 別のサーバーに RADIUS 要求をプロキシすることはできません。

  1. サーバーで、サーバー マネージャーを開きます。 [クイック スタート] メニューから [役割と機能の追加ウィザード] を選択します。
  2. インストールの種類として、 [役割ベースまたは機能ベースのインストール] を選択します。
  3. [ネットワーク ポリシーとアクセス サービス] サーバーの役割を選択します。 ウィンドウがポップアップし、この役割を実行するために必要な追加機能が通知される場合があります。
  4. [確認] ページまでウィザードを続行します。 準備ができたら、 [インストール] を選択します。

NPS サーバーの役割のインストールには数分かかる場合があります。 完了したら次のセクションに進み、VPN ソリューションからの受信 RADIUS 要求を処理するようにこのサーバーを構成します。

NPS サーバーと通信するように VPN ソリューションを構成する

使用する VPN ソリューションに応じて、RADIUS 認証ポリシーを構成する手順は異なります。 RADIUS NPS サーバーをポイントするように VPN ポリシーを構成します。

クラウドにドメイン ユーザーを同期する

この手順は、テナントで既に完了している可能性がありますが、Microsoft Entra Connect が最近データベースを同期させたことを再確認することをお勧めします。

  1. Microsoft Entra 管理センターグローバル管理者としてサインインします。
  2. [ID]>[ハイブリッド管理]>[Microsoft Entra Connect] の順に移動します。
  3. 同期の状態が [有効] であり、最後の同期が 1 時間以内であったことを確認します。

新しい同期を開始する必要がある場合は、「Azure AD Connect の同期: Scheduler」の手順を使用します。

ユーザーが使用できる認証方法を決定する

NPS 拡張機能のデプロイで使用できる認証方法に影響する 2 つの要素があります。

  • RADIUS クライアント (VPN、Netscaler サーバーなど) と NPS サーバー間で使用されるパスワードの暗号化アルゴリズム。

    • PAP を使うと、クラウドでの Microsoft Entra MFA のすべての認証方法 (電話、一方向テキスト メッセージ、モバイル アプリの通知、OATH ハードウェア トークン、モバイル アプリの確認コード) がサポートされます。
    • CHAPV2EAP は、電話とモバイル アプリの通知をサポートします。
  • クライアント アプリケーション (VPN、Netscaler サーバーなど) が処理できる入力方式。 たとえば、VPN クライアントに、ユーザーがテキストまたはモバイル アプリから確認コードを入力できるようにするなんらかの手段があるかどうか。

Azure でサポートされていない認証方法を無効にすることができます。

注意

使用されている認証プロトコル (PAP、CHAP、または EAP) に関係なく、MFA メソッドがテキストベース (SMS、モバイル アプリ確認コード、または OATH ハードウェア トークン) であり、ユーザーが VPN クライアントの UI 入力フィールドにコードまたはテキストを入力する必要がある場合は、認証が成功する可能性があります。 "ただし"、ネットワーク アクセス ポリシーで構成されている RADIUS 属性は、RADIUS クライアント (VPN ゲートウェイなどのネットワーク アクセス デバイス) へは転送 "されません"。 その結果、VPN クライアントが持つアクセス権は、必要以上に多くなったり、少なくなったり、なくなったりします。

回避策として、CrpUsernameStuffing スクリプトを実行して、ネットワーク アクセス ポリシーで構成されている RADIUS 属性を転送し、ユーザーの認証方法で SMS、Microsoft Authenticator パスコード、ハードウェア FOB などのワンタイム パスコード (OTP) を使用する必要がある場合に MFA を許可することができます。

ユーザーを MFA に登録する

NPS 拡張機能を展開して使用する前に、Microsoft Entra MFA を実行する必要があるユーザーを MFA に登録する必要があります。 また、拡張機能をデプロイ時にテストするには、Microsoft Entra MFA に対して完全に登録されている少なくとも 1 つのテスト アカウントが必要です。

テスト アカウントを作成して構成する必要がある場合は、次の手順を使用します。

  1. テスト アカウントで https://aka.ms/mfasetup にサインインします。
  2. 表示されたメッセージに従って、確認方法を設定します。
  3. 少なくとも認証ポリシー管理者として Microsoft Entra 管理センターにサインインします。
  4. [保護]>[多要素認証] の順に進み、テスト アカウントを有効にします。

重要

ユーザーが Microsoft Entra MFA に正常に登録されていることを確認します。 ユーザーが以前にセルフサービス パスワード リセット (SSPR) のみに登録している場合は、そのアカウントに対して StrongAuthenticationMethods が有効になります。 ユーザーが SSPR のみに登録した場合でも、StrongAuthenticationMethods が構成されている場合は、Microsoft Entra MFA が適用されます。

SSPR と Microsoft Entra MFA を同時に構成する、統合されたセキュリティ登録を有効にすることができます。 詳細については、「Microsoft Entra ID での統合されたセキュリティ情報の登録を有効にする」を参照してください。

以前に SSPR のみを有効にした場合は、認証方法を再登録するようユーザーに強制することもできます。

ユーザー名とパスワードを使用して NPS サーバーに接続するユーザーは、MFA プロンプトを完了する必要があります。

NPS 拡張機能のインストール

重要

VPN アクセス ポイントとは異なるサーバーに NPS 拡張機能をインストールします。

Microsoft Entra MFA 用の NPS 拡張機能をダウンロードしてインストールする

NPS 拡張機能をダウンロードしてインストールするには、次の手順を実行します。

  1. Microsoft ダウンロード センターから NPS 拡張機能をダウンロードします。
  2. 構成するネットワーク ポリシー サーバーにバイナリをコピーします。
  3. setup.exe を実行してインストールの指示に従います。 エラーが発生した場合は、前提条件のセクションのライブラリが正常にインストールされていることを確認してください。

NPS 拡張機能のアップグレード

既存の NPS 拡張機能のインストールを後からアップグレードする場合は、基になるサーバーの再起動を回避するために、次の手順を行います。

  1. 既存のバージョンをアンインストールする。
  2. 新しいインストーラーを実行する。
  3. ネットワーク ポリシー サーバー (IAS) サービスを再起動する。

PowerShell スクリプトの実行

インストーラーによって、C:\Program Files\Microsoft\AzureMfa\Config (C:\ はインストール先のドライブ) に PowerShell スクリプトが作成されます。 この PowerShell スクリプトは、実行されるたびに次のアクションを実行します。

  • 自己署名証明書を作成する。
  • Microsoft Entra ID のサービス プリンシパルに証明書の公開キーを関連付けます。
  • ローカル コンピューターの証明書ストアに証明書を格納する。
  • ネットワーク ユーザーに証明書の秘密キーへのアクセスを許可する。
  • NPS サービスを再起動する。

(PowerShell スクリプトで生成される自己署名証明書ではなく) 独自の証明書を使用する場合を除き、PowerShell スクリプトを実行して NPS 拡張機能のインストールを完了します。 複数のサーバーに拡張機能をインストールする場合は、それぞれのサーバーに独自の証明書が必要です。

負荷分散機能または冗長性を提供するには、必要に応じて、追加の NPS サーバーで次の手順を繰り返します。

  1. 管理者として Windows PowerShell プロンプトを開きます。

  2. インストーラーによって PowerShell スクリプトが作成されたディレクトリに移動します。

    cd "C:\Program Files\Microsoft\AzureMfa\Config"
    
  3. インストーラーによって作成された PowerShell スクリプトを実行します。

    PowerShell を正常に接続してパッケージをダウンロードできるようにするには、まず TLS 1.2 を有効にする必要がある可能性があります。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    重要

    Azure for US Government クラウドまたは Azure operated by 21Vianet によって運営される Microsoft Azure クラウドを使用しているお客様の場合は、最初に AzureMfaNpsExtnConfigSetup.ps1 スクリプトを編集して、必要なクラウドの AzureEnvironment パラメーターを含めます。 たとえば、 -AzureEnvironment USGovernment または --AzureEnvironment AzureChinaCloud を指定します。

    .\AzureMfaNpsExtnConfigSetup.ps1
    
  4. Microsoft Entra ID 管理センターにグローバル管理者としてサインインします。

  5. PowerShell によって、テナント ID の入力が求められます。 前提条件のセクションでコピーしたテナント ID の GUID を使用します。

  6. スクリプトが終了すると、成功メッセージが表示されます。

以前のコンピューター証明書が期限切れになり、新しい証明書が生成された場合は、期限切れの証明書をすべて削除する必要があります。 期限切れの証明書があると、NPS 拡張機能の起動で問題が生じる可能性があります。

注意

PowerShell スクリプトを使用して証明書を生成するのではなく独自の証明書を使用する場合は、NPS 名前付け規則に合わせてください。 サブジェクト名は CN=<TenantID>,OU=Microsoft NPS Extension にする必要があります。

Microsoft Azure Government または 21Vianet によって運営される Microsoft Azure の場合の追加手順

Azure Government クラウドまたは 21Vianet によって運営される Azure クラウドを使用しているお客様の場合は、各 NPS サーバーで次の追加の構成手順を実行する必要があります。

重要

これらのレジストリ設定の構成は、Azure Government または 21Vianet によって運営される Azure を利用している場合のみ行ってください。

  1. Azure Government または 21Vianet によって運営される Azure を利用している場合、NPS サーバーでレジストリ エディターを開きます。

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AzureMfa に移動します。

  3. Azure Government のお客様の場合は、次のキー値を設定します。

    レジストリ キー
    AZURE_MFA_HOSTNAME strongauthenticationservice.auth.microsoft.us
    AZURE_MFA_RESOURCE_HOSTNAME adnotifications.windowsazure.us
    STS_URL https://login.microsoftonline.us/
  4. 21Vianet によって運営される Microsoft Azure のお客様の場合は、次のキー値を設定します。

    レジストリ キー
    AZURE_MFA_HOSTNAME strongauthenticationservice.auth.microsoft.cn
    AZURE_MFA_RESOURCE_HOSTNAME adnotifications.windowsazure.cn
    STS_URL https://login.chinacloudapi.cn/
  5. 前の 2 つの手順を繰り返して、各 NPS サーバーのレジストリ キーの値を設定します。

  6. NPS サーバーごとに NPS サービスを再起動します。

    影響を最小限に抑えるには、各 NPS サーバーを 1 つずつ NLB ローテーションから外し、すべての接続がドレインされるのを待ちます。

証明書のロールオーバー

NPS 拡張機能のリリース 1.0.1.32 では、複数の証明書の読み取りがサポートされるようになりました。 この機能により、証明書の有効期限が切れる前のローリング アップデートが容易になります。 組織で以前のバージョンの NPS 拡張機能を実行している場合は、バージョン 1.0.1.32 以降にアップグレードしてください。

AzureMfaNpsExtnConfigSetup.ps1 スクリプトによって作成された証明書は、2 年間有効です。 証明書の有効期限を監視します。 NPS 拡張機能の証明書は、"ローカル コンピューター" の証明書ストアの [個人用] に配置され、インストール スクリプトに提供されるテナント ID に対して "発行" されます。

証明書の有効期限が近づいている場合は、置き換えるための新しい証明書を作成する必要があります。 このプロセスを完了するには、AzureMfaNpsExtnConfigSetup.ps1 を再度実行し、メッセージが表示されたら同じテナント ID を指定します。 このプロセスは、環境内の各 NPS サーバーで繰り返す必要があります。

NPS 拡張機能の構成

環境を準備し、必要なサーバーに NPS 拡張機能をインストールしたら、拡張機能を構成できます。

このセクションでは、NPS 拡張機能を正常にデプロイするために必要な設計上の考慮事項と提案を示します。

構成の制限

  • Microsoft Entra MFA の NPS 拡張機能には、MFA サーバーからクラウドにユーザーと設定を移行するためのツールは含まれません。 このため、既存のデプロイではなく、新しいデプロイに拡張機能を使用することをお勧めします。 既存のデプロイで拡張機能を使用する場合、ユーザーはクラウドに MFA の詳細を設定するために、再度セキュリティ確認を実行する必要があります。
  • NPS 拡張機能は、オンプレミスの AD DS 環境の UPN を使用して Microsoft Entra MFA のユーザーを識別し、セカンダリ認証を行います。代替ログイン ID やカスタム AD DS フィールドなど、UPN 以外の識別子を使用するように NPS 拡張機能を構成することができます。 詳細については、多要素認証 (MFA) のための NPS 拡張機能の詳細構成オプションに関する記事をご覧ください。
  • すべての暗号化プロトコルで、すべての検証メソッドがサポートされるわけではありません。
    • PAP は、電話、テキスト メッセージ、モバイル アプリの通知、およびモバイル アプリの確認コードをサポートします。
    • CHAPV2EAP は、電話とモバイル アプリの通知をサポートします。

MFA を必須とする RADIUS クライアントの制御

NPS 拡張機能を使用して RADIUS クライアントに対して MFA を有効にすると、このクライアントに対するすべての認証で MFA の実行が必須になります。 一部の RADIUS クライアントに対してのみ MFA を有効にする場合は、2 つの NPS サーバーを構成し、そのうちの一方に拡張機能をインストールします。

MFA を必須とする RADIUS クライアントについては、拡張機能が構成された NPS サーバーに要求を送信するよう構成し、他の RADIUS クライアントについては、拡張機能が構成されていない NPS サーバーに要求を送信するよう構成します。

MFA に登録されていないユーザーのための準備

MFA に登録されていないユーザーがいる場合は、そのユーザーが認証しようとしたときの動作を決める必要があります。 この動作を制御するには、レジストリ パス HKLM\Software\Microsoft\AzureMFA にある設定 REQUIRE_USER_MATCH を使用します。 この設定の構成オプションは 1 つだけです。

Key Default
REQUIRE_USER_MATCH TRUE または FALSE 未設定 (TRUE に相当)

この設定により、ユーザーが MFA に登録されていない場合の処理方法が決まります。 キーが存在しないか、設定されていないか、または TRUE に設定されていて、ユーザーが登録されていない場合は、拡張機能による MFA チャレンジが失敗します。

キーが FALSE に設定されていて、ユーザーが登録されていない場合は、MFA を実行することがなく認証が行われます。 ユーザーが MFA に登録されている場合、REQUIRE_USER_MATCHFALSE に設定されている場合でも、ユーザーは MFA で認証する必要があります。

ユーザーのオンボーディング中、Microsoft Entra MFA への登録の一部がまだ完了しないうちに、このキーを作成して FALSE に設定できます。 ただし、MFA に登録されていないユーザーのサインインが許可されることになるため、このキーは運用環境に移行する前に削除してください。

トラブルシューティング

NPS 拡張機能の正常性チェック スクリプト

Microsoft Entra MFA の NPS 拡張機能の正常性チェック スクリプトは、NPS 拡張機能のトラブルシューティングを行うときに、基本的な正常性チェックを実行します。 スクリプトを実行し、使用可能なオプションのいずれかを選択します。

AzureMfaNpsExtnConfigSetup.ps1 スクリプトの実行中の "サービス プリンシパルが見つかりませんでした" というエラーを修正する方法を教えてください。

何らかの理由で "Azure MFA クライアント" サービス プリンシパルがテナントに作成されていない場合は、PowerShell を実行して手動で作成できます。

Connect-MgGraph -Scopes 'Application.ReadWrite.All'
New-MgServicePrincipal -AppId 981f26a1-7f43-403b-a875-f8b09b8cd720 -DisplayName "Azure Multi-Factor Auth Client"

完了したら、Microsoft Entra 管理センターグローバル管理者としてサインインします。 [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>の順に進み、"Azure MFA クライアント" を検索します。 次に、[このアプリのプロパティを確認する] をクリックします。 サービス プリンシパルが有効か無効かを確認します。 アプリケーション エントリの> [プロパティ] をクリックします。 [ユーザーのサインインを有効にする] オプションが [いいえ] に設定されている場合は、[はい] に設定します。

AzureMfaNpsExtnConfigSetup.ps1 スクリプトをもう一度実行すれば、サービス プリンシパルが見つかりませんでした というエラーは返されません。

クライアント証明書が正常にインストールされていることを確認するにはどうすればよいですか。

インストーラーによって証明書ストア内に作成された自己署名証明書を探して、ユーザー NETWORK SERVICE が秘密キーへのアクセスを許可されていることを確認します。 この証明書のサブジェクト名は CN <tenantid>, OU = Microsoft NPS Extension になります。

AzureMfaNpsExtnConfigSetup.ps1 スクリプトによって生成された自己署名証明書の有効期間は 2 年間です。 証明書がインストールされていることを確認するときは、証明書の有効期限が切れていないことも確認する必要があります。

クライアント証明書が Microsoft Entra ID のテナントに関連付けられていることを確認するにはどうすればよいですか?

PowerShell コマンド プロンプトを開き、次のコマンドを実行します。

Connect-MgGraph -Scopes 'Application.Read.All'
(Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'" -Property "KeyCredentials").KeyCredentials | Format-List KeyId, DisplayName, StartDateTime, EndDateTime, @{Name = "Key"; Expression = {[System.Convert]::ToBase64String($_.Key)}}, @{Name = "Thumbprint"; Expression = {$Cert = New-object System.Security.Cryptography.X509Certificates.X509Certificate2; $Cert.Import([System.Text.Encoding]::UTF8.GetBytes([System.Convert]::ToBase64String($_.Key))); $Cert.Thumbprint}}

このコマンドは、テナントと NPS 拡張機能のインスタンスを関連付けているすべての証明書を PowerShell セッションに出力します。 クライアント証明書を Base-64 encoded X.509(.cer) ファイルとして秘密キーなしでエクスポートし、PowerShell が出力したリストと比較します。 サーバーにインストールされている証明書のサムプリントとこれを比較します。 証明書のサムプリントが一致する必要があります。

複数の証明書が返されている場合は、判読できる形式のタイムスタンプ StartDateTimeEndDateTime を使用して、明らかに無関係な証明書を除外することができます。

サインインできないのはなぜですか。

パスワードの有効期限が切れていないことを確認します。 NPS 拡張機能では、サインイン ワークフローの中でパスワードを変更することはできません。 ご自分の組織の IT スタッフに連絡してサポートを依頼してください。

要求がセキュリティ トークン エラーで失敗するのはなぜですか。

このエラーにはいくつかの原因が考えられます。 次の手順に従ってトラブルシューティングを行います。

  1. NPS サーバーを再起動します。
  2. クライアント証明書が正常にインストールされていることを確認します。
  3. 証明書が Microsoft Entra ID のテナントに関連付けられていることを確認します。
  4. 拡張機能を実行しているサーバーから https://login.microsoftonline.com/ にアクセスできることを確認します。

HTTP ログにユーザーが見つからないというエラーが記録され、認証が失敗するのはなぜですか。

AD Connect が実行していること、およびユーザーがオンプレミスの AD DS 環境と Microsoft Entra ID の両方に存在していることを確認します。

すべての認証が失敗し、ログに HTTP 接続エラーが記録されるのはなぜですか。

NPS 拡張機能を実行しているサーバーから https://adnotifications.windowsazure.comhttps://strongauthenticationservice.auth.microsoft.com に到達可能であることを確認します。

有効な証明書があるにもかかわらず認証が機能しないのはなぜですか。

以前のコンピューター証明書が期限切れになり、新しい証明書が生成された場合は、期限切れの証明書をすべて削除します。 期限切れの証明書があると、NPS 拡張機能の起動で問題が生じる可能性があります。

有効な証明書があるかどうかを確認するには、MMC を使用してローカルの "コンピューター アカウントの証明書ストア" をチェックし、その証明書が有効期限を過ぎていないことを確認してください。 有効な証明書を新しく生成するには、「PowerShell スクリプトの実行」の手順を再度行います。

NPS サーバーのログに破棄された要求があるのはなぜですか。

タイムアウト値が小さすぎる場合、VPN サーバーは NPS サーバーに対して繰り返し要求を送信することがあります。 これらの複製要求は NPS サーバーによって検出され、破棄されます。 この動作は仕様どおりであり、NPS サーバーまたは Microsoft Entra MFA の NPS 拡張機能に問題があることを示すものではありません。

NPS サーバーのログに破棄されたパケットがある理由の詳細については、この記事の冒頭にある「RADIUS プロトコルの動作と NPS 拡張機能」を参照してください。

Microsoft Authenticator の番号照合を NPS で機能させるには

NPS では数値の一致をサポートしませんが、最新の NPS 拡張機能では、Microsoft Authenticator で使用できる TOTP、その他のソフトウェア トークン、ハードウェア FOB など、時間ベースのワンタイム パスワード (TOTP) 方式をサポートします。 TOTP サインインでは、代替の [承認]/[禁止] のエクスペリエンスより優れたセキュリティを実現します。 必ず最新バージョンの NPS 拡張機能をお使いください。

2023 年 5 月 8 日以降、すべてのユーザーに対して数値の一致が有効になっている場合、NPS 拡張機能バージョン 1.2.2216.1 以降との RADIUS 接続を実行するユーザーは、代わりに TOTP 方式でサインインするように求められます。

この動作を得るには、ユーザーは TOTP 認証方法を登録する必要があります。 TOTP 方式を登録していないユーザーには、引き続き [承認]/[禁止] が表示されます。

2023 年 5 月 8 日以降、NPS 拡張機能バージョン 1.2.2216.1 のリリース前に、これより前のバージョンの NPS 拡張機能を実行する組織では、レジストリを変更することでユーザーに TOTP の入力を求めるようにすることができます。 詳しくは、「NPS 拡張機能」をご覧ください。

TLS/SSL プロトコルと暗号スイートの管理

組織で求められない限り、以前の強度の低い暗号スイートを無効にするか、削除することをお勧めします。 このタスクを完了する方法については、「AD FS の SSL/TLS プロトコルおよび暗号スイートの管理」を参照してください。

その他のトラブルシューティング

その他のトラブルシューティングのガイダンスと可能なソリューションについては、「Microsoft Entra MFA の NPS 拡張機能からのエラー メッセージを解決する」を参照してください。

次のステップ