Windows Hello for Businessをオンプレミスかつキー信頼方式で構築する方法

53 min read

はじめに

Windows Hello for Businessをオンプレミスかつキー信頼方式で構築する方法をご紹介します。 WHfBではMFAが必須となりますが、本記事ではadfsmfaと呼ばれるOSSを使用してEntra ID等のクラウドサービスの利用なしでオンプレミスオンリーな構築を行うことができます。 本記事ではADDC、ADCS、ADFSが一つのWindows Server上に構築されます。また、adfsmfaというOSSの利用を行っております。本記事の内容はPoCを前提としておりますので、本番環境導入の際にはくれぐれもご注意ください。

構築の流れ

WHfBの構築は以下の手順で進めていきます:

  1. Active Directory Domain Services (ADDS)の構築

    • ドメインコントローラーの設定
    • DNSサーバーの構成
  2. Active Directory Certificate Services (ADCS)の構築

    • 証明機関のインストールと構成
    • Kerberos認証用と内部Webサーバー用の証明書テンプレートの作成
    • 証明書の自動登録設定
  3. Active Directory Federation Services (ADFS)の構築

    • ADFSのインストールと基本構成
    • サービス証明書の発行
    • デバイス登録サービス(DRS)の構成
  4. MFA環境の構築

    • adfsmfaのインストール
    • MFAスキーマの構成
    • ユーザー認証設定の構成
  5. Windows Hello for Business設定

    • グループポリシーによるWHfB設定
    • クライアント端末の構成

これらの構成が完了することで、オンプレミス環境でのWindows Hello for Business環境が利用可能となります。

事前準備

WHfBを構築するための基盤となるActive DirectoryとActive Directory証明書サービスの構築を行います。

ADDCの構成

まず、Active Directory環境を構築する必要があります。 以下はDomain Controller展開手順となります。既に環境が存在する方は本項目をスキップしてください。

ADDCのインストール

サーバーマネージャにて「役割と機能の追加」をクリックします。

「開始する前に」では次へをクリックします。

「インストールの種類と選択」では次へをクリックします。

「対象のサーバの選択」では次へをクリックします。

「役割と機能の追加」では「Active Directoryドメインサービス」を選択します。 その際に、「役割と機能の追加ウィザード」が表示されるので「機能の追加」をクリックします。

追加で「DNSサーバー」の選択も行います。

再度、「役割と機能の追加ウィザード」が表示されるので「機能の追加」をクリックします。

「Active Directory ドメインサービス」と「DNSサーバー」が選択されていることを確認し、次へをクリックします。

「機能の選択」ではデフォルトのまま次へをクリックします。

「Active Directory ドメインサービス」では次へをクリックします。

「DNS サーバー」では次へをクリックします。

「インストールオプションの確認」では内容を確認し、インストールをクリックします。

インストールが開始することを確認します。

インストールが正常に完了したら閉じるをクリックします。

ADDCの構成

サーバーマネージャの通知を開き、「このサーバーをドメインコントローラーに昇格する」をクリックします。

「配置構成」では「新しいフォレストを追加する」を選択し、「ルートドメイン名」を入力し、次へをクリックします。 例として「example.local」を使用します。

「ドメインコントローラーオプション」では「パスワード」に任意のパスワードを入力し、次へをクリックします。

「DNSオプション」ではデフォルトのまま次へをクリックします。

「NetBIOSドメイン名」ではデフォルトまたは任意のドメイン名を指定し、次へをクリックします。

「パス」ではデフォルトのまま次へをクリックします。

「オプションの確認」では確認を行い、次へをクリックします。

「前提条件のチェック」では前提条件がクリアされていることを確認し、インストールをクリックします。

インストールが開始したことを確認してください。

インストールが終了すると、サインアウトのポップアップが表示されるため、閉じるをクリックします。

再起動後、サーバーマネージャの左ペインに「AD DS」が表示されることを確認してください。

ADCSの構成

オンプレミスのADFSでは、Active Directory Certificate Services(ADCS)を構築し、証明書の発行を行う必要があります。以下はADCS展開手順となります。既にADCSが構築されている環境の方は本項目をスキップしてください。

ADCSのインストール

サーバーマネージャにて「役割と機能の追加」をクリックします。

「開始する前に」では次へをクリックします。

「インストールの種類と選択」では次へをクリックします。

「対象のサーバの選択」では次へをクリックします。

「役割と機能の追加」では「Active Directory 証明書サービス」を選択します。 その際に、「役割と機能の追加ウィザード」が表示されるので「機能の追加」をクリックします。

「Active Directory 証明書サービス」が選択されていることを確認し、次へをクリックします。

「機能の選択」ではデフォルトのまま次へをクリックします。

「Active Directory 証明書サービス」では次へをクリックします。

「役割サービスの選択」では「証明機関」を選択し、次へをクリックします。

「インストールオプションの確認」では内容を確認し、インストールをクリックします。

インストールが開始することを確認します。

インストールが正常に完了したら閉じるをクリックします。

ADCSの構成

サーバーマネージャの通知を開き、「対象サーバーにActive Directory 証明書サービスを構成する」をクリックします。

「資格情報」ではデフォルトのまま次へをクリックします。

「役割サービス」では「証明機関」を選択し、次へをクリックします。

「セットアップの種類」では「エンタープライズ」を選択し、次へをクリックします。

「CAの種類」では「ルートCA」を選択し、次へをクリックします。

「秘密キー」では「新しい秘密のキーを作成する。」を選択し、次へをクリックします。

「CAの暗号化」ではデフォルトのまま次へをクリックします。

「有効期間」では任意の有効期間を指定し、次へをクリックします。

「CAの暗号化」ではデフォルトのまま次へをクリックします。

「CAデータベース」ではデフォルトのまま次へをクリックします。

「確認」では内容を確認し、構成をクリックします。

「結果」にて正常に構成されたことを確認します。

再起動後、サーバーマネージャの左ペインに「AD CS」が表示されることを確認してください。

証明書テンプレートの作成

Kerberos認証用証明書テンプレートの構成

WHfBでは、クライアント端末の認証に使用するKerberos認証用の証明書が必要となります。ここでは「Kerberos認証」テンプレートを複製し、認証に必要な要件を満たすテンプレートを作成します。

サーバマネージャにて上部のツールから「証明機関」をクリックします。

「証明機関(ローカル)」→「{証明機関の名前}」→「証明書テンプレート」を右クリックし、「管理」をクリックします。

「Kerberos認証」を右クリックし、「テンプレートの複製」をクリックします。

「互換性」では「Windows Server 2016」を選択します。

「結果的な変更」ウィンドウが開いたら「OK」をクリックします。

同じく「証明書の受信者」でも「Windows 10/ Windows Server 2016」を選択します。

「結果的な変更」ウィンドウが開いたら「OK」をクリックします。

「全般」では「テンプレート表示名」に任意の名前を入力します。また、「有効期間」、「更新期間」も任意の値を指定します。

「サブジェクト名」では「Active Directoryの情報から構築する」にチェックを入れ、「DNS名」が選択されていることを確認します。

「暗号化」では以下のように構成します。その後、「OK」をクリックします。 プロバイダのカテゴリー:キー格納プロバイダー アルゴリズム名:RSA ハッシュの要求:SHA256

証明書テンプレートが作成されたことを確認します。

作成した証明書テンプレートを右クリックし、「プロパティ」をクリックします。

「優先するテンプレート」にて「追加」をクリックします。

証明書テンプレート一覧が表示されるので以下の3つを追加します。

  • Kerberos認証
  • ドメインコントローラー
  • ドメインコントローラーの認証

「OK」をクリックします。

内部Webサーバ用証明書テンプレートの構成

ADFSサービスで使用するSSL/TLS証明書を発行するためのテンプレートを作成します。「Webサーバー」テンプレートを複製し、サブジェクト名の要求設定やセキュリティ権限の付与を行います。このテンプレートにより発行される証明書は、ADFSのサービス通信やデバイス登録サービス(DRS)での通信に使用されます。

サーバマネージャにて上部のツールから「証明機関」をクリックします。

「証明機関(ローカル)」→「{証明機関の名前}」→「証明書テンプレート」を右クリックし、「管理」をクリックします。

「Webサーバー」を右クリックし、「テンプレートの複製」をクリックします。

「互換性」では「Windows Server 2016」を選択します。

「結果的な変更」ウィンドウが開いたら「OK」をクリックします。

同じく「証明書の受信者」でも「Windows 10/ Windows Server 2016」を選択します。

「結果的な変更」ウィンドウが開いたら「OK」をクリックします。

互換設定を確認します。

「全般」では「テンプレート表示名」に任意の名前を入力します。また、「有効期間」、「更新期間」も任意の値を指定します。

「要求処理」では「秘密キーのエクスポートを許可する。」にチェックを入れます。

「サブジェクト名」では「要求に含まれる」を選択します。

「セキュリティ」では「追加」をクリックします。

「オブジェクトの種類」をクリックします。

「オブジェクトの種類」では「コンピュータ」と「グループ」を選択します。

選択するオブジェクト名に証明書の発行を許可するコンピュータ/グループの名前を入力します。 例では同じくDC01.example.localとしています。

追加したコンピュータが一覧に表示されていることを確認し、下のアクセス許可にて「登録」を選択します。

「暗号化」では以下のように構成します。その後、「OK」をクリックします。 プロバイダのカテゴリー:キー格納プロバイダー アルゴリズム名:RSA ハッシュの要求:SHA256

証明書テンプレートが作成されたことを確認します。

旧証明書テンプレートの削除

新しく作成した証明書テンプレートに完全に移行する場合、既存の証明書テンプレートを削除する必要があります。

サーバマネージャにて上部のツールから「証明機関」をクリックします。

「証明機関(ローカル)」→「{証明機関の名前}」→「証明書テンプレート」に進み、「ドメインコントローラ」を右クリックし、「削除」をクリックします。

確認が表示されるので「はい」をクリックします。

同じく「Kerberos認証」も削除を実施します。

削除した「ドメインコントローラ」、「Kerberos認証」が一覧から消えていることを確認します。

証明書テンプレートの公開

Kerberos認証証明書テンプレートの公開

作成したKerberos認証用の証明書テンプレートを公開します。この手順により、ドメインコントローラーが新しいテンプレートを使用して証明書を要求できるようになります。

サーバマネージャにて上部のツールから「証明機関」をクリックします。

「証明機関(ローカル)」→「{証明機関の名前}」→「証明書テンプレート」を右クリックし、「新規作成」→「発行する証明書テンプレート」をクリックします。

先ほど作成したKerberos認証用証明書テンプレートを選択し、OKをクリックします。

証明書テンプレート一覧に追加されたことを確認します。

内部Webサーバ用証明書テンプレートの公開

作成した内部Webサーバー用の証明書テンプレートを公開します。この手順により、ADFSサーバーが新しいテンプレートを使用して証明書を要求できるようになります。

「証明機関(ローカル)」→「{証明機関の名前}」→「証明書テンプレート」を右クリックし、「新規作成」→「発行する証明書テンプレート」をクリックします。

先ほど作成した内部Webサーバ用証明書テンプレートを選択し、OKをクリックします。

証明書テンプレート一覧に追加されたことを確認します。

証明書の自動登録

グループポリシーを使用して、証明書の自動登録を構成します。これにより、ドメインコントローラ用のKerberos証明書を自動的に配置することができます。

サーバマネージャにて上部のツールから「グループポリシーの管理」をクリックします。

「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」→「グループポリシーオブジェクト」を右クリックし、「新規」をクリックします。

「名前」に「ドメインコントローラの自動証明書登録」と入力し、「OK」をクリックします。

「グループポリシーオブジェクト」内に作成されるので右クリックし、「編集」をクリックします。

「コンピュータの構成」→「ポリシー」→「Windowsの設定」→「セキュリティの設定」→「公開キーのポリシー」内にある「証明書サービスクライアント-自動登録」を右クリックし、「プロパティ」をクリックします。

「構成モデル」を「有効」にし、以下の項目にチェックを入れます。その後、「OK」をクリックします。

  • 有効期限が切れた証明書を書き換え、保留中の証明書を更新、および失効した証明書を削除する
  • 証明書テンプレートを使用する証明書を更新する

「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」→「Domain Controllers」を右クリックし、「既存のGPOのリンク」をクリックします。

「ドメインコントローラの自動証明書登録」を選択し、「OK」をクリックします。

紐づけられていることを確認します。

証明書配置の確認

Kerberos認証用証明書に置き換わっていることの確認を行います。

イベントビューアでの証明書置き換え確認

証明書の自動登録が正常に動作していることを、イベントビューアのログで確認します。

サーバマネージャにて上部のツールから「イベントビューア」をクリックします。

「アプリケーションとサービス」→「Microsoft」→「Windows」→「CertificateServices-Lifecycles-System」内にある「Operational」を選択します。

イベントの詳細を確認すると、発行内容やテンプレートの情報を確認することができます。

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-CertificateServicesClient-Lifecycle-System" Guid="{bc0669e1-a10d-4a78-834e-1ca3c806c93b}" /> 
  <EventID>1001</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8000000000000000</Keywords> 
  <TimeCreated SystemTime="2025-02-12T03:18:55.1429988Z" /> 
  <EventRecordID>4</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="1472" ThreadID="6520" /> 
  <Channel>Microsoft-Windows-CertificateServicesClient-Lifecycle-System/Operational</Channel> 
  <Computer>dc01.example.local</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
- <UserData>
- <CertNotificationData ProcessName="taskhostw.exe" AccountName="EXAMPLE\DC01$" Context="Machine">
  <Action>Supersede</Action> 
- <OldCertificateDetails Thumbprint="f72d2aecc004d6b6b6b709c91c1c2ada96920151">
  <Template Name="DomainController" /> 
- <SubjectNames>
  <SubjectName>CN=dc01.example.local</SubjectName> 
  <SubjectName>fad77302-8a95-4e00-8005-0d312d9bc6f3</SubjectName> 
  <SubjectName>dc01.example.local</SubjectName> 
  </SubjectNames>
- <EKUs>
  <EKU Name="クライアント認証" OID="1.3.6.1.5.5.7.3.2" /> 
  <EKU Name="サーバー認証" OID="1.3.6.1.5.5.7.3.1" /> 
  </EKUs>
  <NotValidAfter>2026-02-12T02:23:53Z</NotValidAfter> 
  </OldCertificateDetails>
- <NewCertificateDetails Thumbprint="824f71dce4966af942b15b0778e8cd1bbbe35319">
  <Template Name="DomainControllerAuthentication(Kerberos)" OID="1.3.6.1.4.1.311.21.8.6026672.7579496.7360386.1871917.16080613.5.10546164.5032938" /> 
- <SubjectNames>
  <SubjectName>dc01.example.local</SubjectName> 
  <SubjectName>example.local</SubjectName> 
  <SubjectName>EXAMPLE</SubjectName> 
  </SubjectNames>
- <EKUs>
  <EKU Name="KDC 認証" OID="1.3.6.1.5.2.3.5" /> 
  <EKU Name="スマート カード ログオン" OID="1.3.6.1.4.1.311.20.2.2" /> 
  <EKU Name="サーバー認証" OID="1.3.6.1.5.5.7.3.1" /> 
  <EKU Name="クライアント認証" OID="1.3.6.1.5.5.7.3.2" /> 
  </EKUs>
  <NotValidAfter>2027-02-12T03:18:54Z</NotValidAfter> 
  </NewCertificateDetails>
  </CertNotificationData>
  </UserData>
  </Event>

証明書の管理から確認

証明書マネージャ(certlm.msc)を使用して、実際に発行された証明書を確認します。

検索欄から「certlm.msc」と検索し、証明書を起動します。

「個人」→「証明書」内に証明書が発行されていることを確認します。

ADFSの構成

ADFSのインストール

Active Directory Federation Servicesの役割追加を行います。ADFSはMFA認証の基盤として使用するため、オンプレミス環境でのWHfBの構築には必須の役割となります。

サーバーマネージャにて「役割と機能の追加」をクリックします。

「開始する前に」では次へをクリックします。

「インストールの種類と選択」では次へをクリックします。

「対象のサーバの選択」では次へをクリックします。

「役割と機能の追加」では「Active Directory Federation Services」を選択します。

「機能の選択」ではデフォルトのまま次へをクリックします。

「Active Directory フェデレーションサービス(AD FS)」では次へをクリックします。

「インストールオプションの確認」では内容を確認し、インストールをクリックします。

インストールが開始することを確認します。

インストールが正常に完了したら閉じるをクリックします。

ADFS用証明書の発行

ADFSサービスで使用するSSL/TLS証明書を発行します。この証明書は先ほど作成した内部Webサーバー用テンプレートを使用して発行され、ADFSの通信暗号化に使用されます。

検索欄から「certlm.msc」と検索し、証明書を起動します。

「個人」→「証明書」を右クリックし、「すべてのタスク」→「新しい証明書の要求」をクリックします。

「開始する前に」では次へをクリックします。

「証明書の登録ポリシーの選択」では次へをクリックします。

「証明書の要求」では内部サーバ用証明書テンプレートにチェックを入れ、「この証明書を登録するには資格情報が不足しています。設定を構成するには、ここをクリックして下さい。」をクリックしてください。

「サブジェクト名」の種類は「共通名」、値はADFSのFQDNを入力し、追加をクリックしてください。 「別名」の種類は「DNS」、値はADFSサービスで使用するFQDN(任意)を入力し、追加をクリックしてください。

値が追加されたことを確認します。

内部Webサーバ用証明書テンプレートにチェックが入っていることを確認し、「登録」をクリックします。

内容を確認し、「完了」をクリックします。

「個人」→「証明書」内に作成した証明書が存在することを確認します。

KDSルートキーの設定

gMSAアカウント(グループ管理サービスアカウント)で使用するKDSルートキーを設定します。このキーはADFSサービスアカウントのパスワード管理に使用されます。

PowerShellを起動します。

以下のコマンドを入力し、KDSルートキーを設定してください。

Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

ADFSの構成

サーバーマネージャの通知を開き、「このサーバーにフェデレーションサービスを構成します」をクリックします。

「ようこそ」では次へをクリックします。

「Active Directory ドメインサービスへの接続」では次へをクリックします。

「サービスのプロパティ」では以下の設定を行います。その後、次へをクリックします。

  • SSL証明書:ADFS向けに作成した証明書を選択します
  • フェデレーションサービス名:証明書のプロパティでDNS名に指定した名前を指定します。
  • フェデレーションサービス表示名:任意のサービス名を入力します。

「サービスアカウントの指定」では「グループ管理サービスアカウントを作成します。」にチェックを入れ、アカウント名に「adfssvc」を指定します。その後、次へをクリックします。

「構成データベースの指定」ではデフォルトのまま次へをクリックします。

「オプションの確認」では内容を確認し、次へをクリックします。

「前提条件の確認」では問題がないことを確認し、「構成」をクリックします。

インストールが開始することを確認します。

インストールが正常に完了することを確認し、閉じるをクリックします。

サーバーマネージャの左ペインに「AD FS」が表示されることを確認してください。

ADFSサービスアカウントをKeyAdminsグループに追加

ADFSサービスアカウントにKey Admins権限を付与します。この権限は、WHfBで使用する暗号化キーの管理に必要となります。

サーバマネージャにて上部のツールから「Active Directory ユーザーとコンピューター」をクリックします。

「{ドメイン名}」→「Users」内にある「Key Admins」を右クリックし、「プロパティ」をクリックします。

「メンバー」タブに進み「追加」をクリックします。

「adfssvc」を検索し、「OK」をクリックします。

メンバーに追加されることを確認します。

ADFSでデバイス登録サービスを構成

DRSサービスの構成

デバイス登録サービス(Device Registration Service)を有効化します。このサービスはWHfBデバイスの登録と管理に使用されます。

サーバマネージャにて上部のツールから「AD FSの管理」をクリックします。

「AD FS」→「サービス」→「Device Registration」に進み、「Device Registrationの構成」をクリックします。

警告が出ますが、「OK」をクリックします。

サービスが有効になったことを確認します。

認証方法の追加

ADFSで使用する認証方法を構成します。イントラネットとエクストラネットの両方で使用する認証方法を設定します。

「AD FS」→「サービス」→「認証方法」に進み、「プライマリ認証方法」の「編集」をクリックします。

「エクストラネット」、「イントラネット」で必要な認証を有効化します。

ファイアーウォールの有効化

ADFSサービスで使用する通信ポート(HTTP/HTTPS)のファイアウォール規則を有効化します。これにより、クライアントからADFSサービスへのアクセスが可能になります。

検索欄に「firewall.cpl」と入力し、起動します。

「詳細設定」をクリックします。

「受信尾規則」にて「ADFS HTTPSサービス(TCP受信)」を右クリックし、「規則の有効化」をクリックします。

同じく「受信尾規則」にて「ADFS HTTPサービス(TCP受信)」を右クリックし、「規則の有効化」をクリックします。

規則が有効化されていることを確認します。

デバイス登録用DNSの設定

デバイス登録サービスで使用するDNSレコード(enterpriseregistration)を作成します。このレコードはWHfBデバイスの自動登録に必要となります。

PowerShellを起動します。

以下のコマンドを入力し、フェデレーションサービスのFQDN名を確認します。

(Get-AdfsProperties).Hostname

サーバマネージャにて上部のツールから「DNS」をクリックします。

「DNS」→「前方参照ゾーン」→「example.local」に進みます。

空欄を右クリックし、「新しいエイリアス(AまたはAAAA)」をクリックします。

「名前」にフェデレーションサービスのドメイン名を入力し、「IPアドレス」にADFSサーバのIPアドレスを入力します。その後、「ホストの追加」をクリックします。

空欄を右クリックし、「新しいエイリアス(CNAME)」をクリックします。

「エイリアス名」に「enterpriseserverregistration」と入力し、「ターゲットホスト用の完全修飾ドメイン名」にフェデレーションサービスのFQDNを入力します。その後、「OK」をクリックします。

レコードが追加されていることを確認します。

フェデレーションサービスを含めるようにイントラネットゾーンを構成

ADFSサービスのURLをイントラネットゾーンに追加するグループポリシーを設定します。これにより、統合認証が正しく機能するようになります。

サーバマネージャにて上部のツールから「グループポリシーの管理」をクリックします。

「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」→「グループポリシーオブジェクト」を右クリックし、「新規」をクリックします。

「名前」に「イントラネットゾーン設定」と入力し、「OK」をクリックします。

作成したGPOを右クリックし、「編集」をクリックします。

「コンピュータの構成」→「ポリシー」→「管理者用テンプレート」→「Windows コンポーネント」→「Internet Explorer」→「インターネットコントロールパネル」→「セキュリティページ」内の「サイトとゾーンの割り当て一覧」をダブルクリックします。

「有効」にチェックを入れ、「表示」をクリックします。

「値の名前」に「https://{フェデレーションサービスのFQDN}」を入力し、「値」に1と入力します。

その後、「OK」をクリックします。

「グループポリシーの管理」に戻り、「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」を右クリックし、「既存のGPOのリンク」をクリックします。

「イントラネットゾーン設定」を選択し、「OK」をクリックします。

GPOが設定されていることを確認します。

ADFSの再起動

設定変更を反映するため、ADFSサービスを再起動します。この手順により、これまでの設定が有効になります。

サーバマネージャの左ペインから「AD FS」に進みます。

「サービス」内の「Active Directoryフェデレーションサービス」を右クリックし、「再起動」をクリックします。

再起動が完了するのを確認します。

ユーザとOUの事前準備

テストユーザの作成

WHfBのテストに使用するユーザーアカウントを作成します。このユーザーを使用して、WHfBの登録と認証をテストします。

サーバマネージャにて上部のツールから「Active Directory ユーザとコンピュータ」をクリックします。

「{ドメイン名}」→「Users」に進み、空白を右クリックし、「新規作成」→「ユーザー」をクリックします。

任意のユーザ名のユーザを作成します。

任意のパスワードを入力します。この際、パスワードは無期限に設定します。

作成内容を確認し、「完了」をクリックします。

ユーザが作成されたことを確認します。

端末のAD参加

テスト用のクライアント端末をActive Directoryドメインに参加させます。WHfBを使用するには、端末がドメインに参加している必要があります。

クライアント端末にて、検索欄で「ncpa.cpl」と検索します。

アダプタを右クリックし、「プロパティ」をクリックします。

「インターネットプロトコルバージョン4」のプロパティを開きます。

DNSサーバにADDSサーバのIPアドレスを指定します。

検索欄で「sysdm.cpl」と検索します。

「変更」をクリックします。

任意のコンピュータ名を入力し、ドメインにはADDSのドメイン名を入力し、「OK」をクリックします。

ドメイン参加の資格が求められるので先ほど作成したユーザの情報を入力します。

確認が出るので「OK」をクリックします。

再起動確認が出るので「OK」をクリックします。

「閉じる」をクリックし、クライアント端末を再起動します。

OUの作成

WHfBを有効化する端末を管理するための組織単位(OU)を作成します。このOUにグループポリシーを適用してWHfBの設定を行います。

サーバマネージャにて上部のツールから「Active Directory ユーザとコンピュータ」をクリックします。

「{ドメイン名}」にて「新規作成」→「組織単位」をクリックします。

任意の名前を入力し、「OK」をクリックします。

OUへのデバイス追加

作成したOUにクライアント端末を移動します。これにより、WHfBの設定を適用する対象を明確にします。

「{ドメイン名}」→「Computers」内に先ほど登録したクライアント端末が存在するので右クリックし、「移動」をクリックします。

移動先に先ほど作成したOUを指定します。

移動したことを確認します。

ADFS MFAの有効化

ADFSでWHfBを構築する場合、外部サービスと連携し、MFAを構成する必要があります。 通常であれば、Azure Entra IDやOkta等のクラウドサービスと連携することが推奨されます。 今回はPoCかつオンプレミスオンリーという条件があるため、OSSであるadfsmfaを利用します。 本番環境への導入は吟味する必要があります。 https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/operations/configure-additional-authentication-methods-for-ad-fs

adfsmfaの導入

OSSのadfsmfaをインストールします。このツールを使用することで、オンプレミス環境でMFA認証を実現することができます。

以下のリンクよりmsiファイルをダウンロードします。 https://github.com/neos-sdi/adfsmfa/releases/tag/3.1

ADFSサーバ内に配置し、msiを実行します。ようこその画面では「Install」をクリックします。

インストールが完了したら「Finish」をクリックします。

Powershellにて以下のコマンドを実行します。

Register-MFASystem

adfsmfaの設定ファイル編集

adfsmfaのスキーマ定義ファイルを環境に合わせて編集します。ドメイン名などの環境固有の情報を正しく設定する必要があります。

以下のファイルを書き換えます。

C:\Program Files\MFA\ADDSTools\mfa-schema.ldf

以下の「DC=X」を実際のドメイン名にすべて置換します。

変更前

dn: CN=MFA-TOTP-Key,CN=Schema,CN=Configuration,DC=X

変更後

dn: CN=MFA-TOTP-Key,CN=Schema,CN=Configuration,DC=example,DC=local

ファイルを編集したら、以下のコマンドを実行し、adfsmfaを構成します。

LDIFDE -i -u -f mfa-schema.ldf

adfsmfaの構成

adfsmfaの設定を行います。管理者の連絡先設定、ユーザーへのMFAキーの割り当てなど設定を行います。 今回はMFAとしてAuthenticatorアプリを使用する方法を採用します。 他にもSMTPサーバの用意があればメール認証等が使用可能です。

サーバマネージャにて上部のツールから「AD FSの管理」をクリックします。

「AD FS」にて「要求プロバイダ信頼の追加」をクリックします。

「サービスの管理の委任を有効にする」にチェックを入れ、「編集」をクリックします。

「Domain Admins」を指定します。

「ローカルシステムアカウントにサービスの管理を許可する」にチェックを入れ、「OK」をクリックします。

デスクトップに追加された「MFA」を起動します。

「グローバルパラメータ」にて一般設定を行います。

「管理上の連絡先」を任意の連絡先、「既定の国コード」を「ja」に変更し、「保存」をクリックします。

「ユーザー管理」にて「名」にはADDS内に登録したユーザのUPN(例:test@example.local)」を指定します。「電子メールの服装」には実際のメールアドレスを登録します。

「キー」タブにて「新しいキー」をクリックします。

QRコードが表示されたら、スマホアプリの「Google Authenticator」や「Microsoft Authenticator」にて読み取りを行います。その後、「OK」をクリックします。

WHfBの構成

GPOの構成

Windows Hello for Businessを有効化するグループポリシーを作成し、設定します。

サーバマネージャにて上部のツールから「グループポリシーの管理」をクリックします。

「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」→「グループポリシーオブジェクト」を右クリックし、「新規」をクリックします。

「名前」に「WHfB」と入力し、「OK」をクリックします。

作成したGPOを右クリックし、「編集」をクリックします。

「コンピューターの構成」→「管理用テンプレート」→「Windows コンポーネント」→「Windows Hello for Business」に進み、「ハードウェアのセキュリティ デバイスを使用する」を右クリックし、「編集」をクリックします。

「有効」にチェックを入れ、「OK」をクリックします。

同じく「Windows Hello for Business を使用する」を右クリックし、「編集」をクリックします。

「有効」にチェックを入れ、「OK」をクリックします。

設定を確認します。

「グループポリシーの管理」→「フォレスト」→「ドメイン」→「{ドメイン名}」→「[作成したOU名}」を右クリックし、「既存のGPOのリンク」をクリックします。

「WHfB」を選択し、「OK」をクリックします。

設定を確認します。

クライアント検証

クライアントで実際にWHfBが動作するのか検証を行います。

クライアント端末で、既存のユーザからログアウトを行います。

WHfBを適用したいユーザでログインします。すると、初回ログイン時にWHfBの構成セットアップが起動します。

ガイドに沿って生体認証の登録を行います。

次にPINの作成を要求されるので、PINを作成します

この際、MFAの種類によって画面表示が変わります。今回はAuthenticatorアプリを使用するシナリオとなっているので、「認証アプリケーションを使用する」にチェックを入れ、「コードの送信」をクリックします。

Authenticatorアプリを起動し、ワンタイムパスワードを確認します。

コードを入力し、「サインイン」をクリックします。

そうするとPINのセットアップが可能となるので、任意のPINを設定します。

これにてWHfBの設定は終了です。

次回以降、自動的に生体認証を使用してログインできるようになります。

参考にさせていただいたサイト