2025年12月19日金曜日

Windows Hello for Business (WHfB) をクラウド信頼で認証するよう構成する手順

前回はEntra Connectを使って、Windowsデバイスをハイブリッド参加させる手順を記載した。

今回は、Windows Hello for Business (WHfB) をクラウド信頼で認証するよう構成する手順を記載する。

環境

本環境を構築した際のOSバージョンは以下の通り。Windows 11は仮想マシンで構築しているため、Windows Helloは顔認証は使えない。したがって、PINの認証ができることまでを確認する。

  • Entra Connect : 2.5.190.0
  • オンプレAD : Windows Server 2022
  • デバイス : Windows 11 24H2 ※仮想マシン

前提として、Entraハイブリッド参加の構成が完了している必要がある。設定できていない場合は、以下手順を参考に設定を行うこと。

クラウド信頼とEntra Kerberosについて

WHfBは認証方式に「キー信頼」、「証明書信頼」、「クラウド信頼」(「クラウドトラスト」だったり「クラウドKerberos信頼」と表現されることもある)の3つの方式が存在する。

今回は後者の「クラウド信頼」で設定する。クラウド信頼には、Entra Kerberosの仕組みを使用する。そもそも、クラウド信頼認証とは何か、については、Microsoftの以下サイトに記載の図が比較的わかりやすい。

ざっくりな説明とはなるが、Windows HelloにてEntra IDに認証を求め、その認証結果をオンプレ側のADに連携することで、クラウドとオンプレ環境のどちらに対してもSSOができるようになる仕組みとなる。以下に図示する。

Entra Kerberosの設定は、基本的には以下のMicrosoftの手順に従って実行する。いろんなサイトにコマンドは乗っているが、以下のサイトの情報が事前事後の情報確認手順が含まれており確実な手順だと思ったので採用した。

Entra Kerberosの設定手順

インターネットからPowerShellのモジュールのインストールをするため、インターネットに接続できる環境で実行すること。コマンド実行は、ドメインに参加している端末でもサーバーでもどちらでも構わない。私は、Entra Connectを導入しているWindows Server 2022にて実行した。

1. PowerShellの実行ポリシーをBypassに変更

PowerShellの実行ポリシーをBypassに変更して、コマンド実行ができるようにする。

Set-ExecutionPolicy Bypass -Scope Process -Force

2. モジュールをインストール

AzureADHybridAuthenticationManagementのモジュールをインストールする。途中「信頼されていないリポジトリ」の確認がされる場合があるが、「y」を入力してインストールする。

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

Install-PackageProvider -Name NuGet -Force
if (@(Get-PSRepository | ? {$_.Name -eq "PSGallery"}).Count -eq 0){
    Register-PSRepository -DefaultSet-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
}
Install-Module -Name PowerShellGet -Force
Install-Module -Name AzureADHybridAuthenticationManagement -AllowClobber

3. 設定前確認

設定変更前に、現在の設定を確認する。コマンド実行時に認証画面が表示されるので、以下に記載の権限を持つアカウントを指定すること。

$domain = "<ドメイン名>"

$domainCred = Get-Credential
※認証画面が表示されるのでオンプレの管理者(Domain Admins)を指定する。

$cloudUserName = "<Entraのグローバル管理者>"

Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName
※認証画面が表示されるのでEntraのグローバル管理者を指定する。

実際の実行結果は以下の通り。すべて空白で実行結果が表示されることを確認する。

PS C:\Windows\system32> Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName

Id                 :
UserAccount        :
ComputerAccount    :
DisplayName        :
DomainDnsName      :
KeyVersion         :
KeyUpdatedOn       :
KeyUpdatedFrom     :
CloudDisplayName   :
CloudDomainDnsName :
CloudId            :
CloudKeyVersion    :
CloudKeyUpdatedOn  :
CloudTrustDisplay  :

4. Entra Kerberos信頼を設定

事前確認でコマンドを問題なく実行できたら、いよいよEntra Kerberos信頼を設定する。特にエラーがなければ、数秒でコマンドが正常終了する(特に実行結果は表示されない)。

このコマンドを実行すると、AzureADKerberosのコンピューターアカウントがDomain ControllersのCNに作成される。

Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $cloudUserName -DomainCredential $domainCred -SetupCloudTrust

5. 設定後確認

設定後の確認のため、再度設定値を確認する。

Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName

実行結果は以下の通り。事前確認の際は空白だったが、Entra Kerberosの設定後は値が表示されることが確認できる。

PS C:\Windows\system32> Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName

Id                 : 18631
UserAccount        : CN=krbtgt_AzureAD,OU=MyUsers,DC=test,DC=com
ComputerAccount    : CN=AzureADKerberos,OU=Domain Controllers,DC=test,DC=com
DisplayName        : krbtgt_18631
DomainDnsName      : test.com
KeyVersion         : 17153
KeyUpdatedOn       : 2025/12/15 10:41:30
KeyUpdatedFrom     : ad001.test.com
CloudDisplayName   : krbtgt_18631
CloudDomainDnsName : test.com
CloudId            : 18631
CloudKeyVersion    : 17153
CloudKeyUpdatedOn  : 2025/12/15 10:41:30
CloudTrustDisplay  : Microsoft.AzureAD.Kdc.Service.TrustDisplay

GUIでも確認しておこう。「Active Directory ユーザーとコンピューター」を開きDomain ControllersのCNを選択する。ここにAzureADKerberosのコンピューターアカウントが登録されている。

6. Entra Connectの同期を待つ

設定後、AzureADKerberosのコンピューターアカウント情報をクラウドに同期させる必要があることから、Entra Connectの同期を待つ。通常30分毎に同期となるが、コマンドで手動同期もできる。せっかちな人は手動で同期をしておこう。

Start-ADSyncSyncCycle -PolicyType Delta

以上で、Entra Kerberosの設定は完了となる。

Windows Hello for Business (WHfB) 設定手順

続けてWHfBの設定を行う。

1. GPOにてWHfBのグループポリシーを設定

設定はGPOでもIntuneでも可能だが、今回はGPOで行う。

「グループポリシーの管理」でGPOを作成し、以下グループポリシーの設定を行う。

  • 設定場所:コンピューターの構成 > ポリシー > 管理用テンプレート > Windowsコンポーネント > Windows Hello for Business
設定 状態 備考
Windows Hello for Business の使用 有効
オンプレミス認証にクラウドトラストを使用する 有効
ハードウェアのセキュリティ デバイスを使用する 有効 必須ではなく推奨項目。

2. ポリシーを適用

Windows 11の端末にログインし、以下コマンドでグループポリシーの適用を行う。適用後、端末を再起動しよう。

gpupdate /force

3. ログイン時に顔認証やPINの登録画面に遷移することを確認

再度ログインした際に、顔認証やPINの登録画面に自動的に遷移すれば成功となる。私の検証環境では、Windows 11は仮想マシンで作成しているので、顔認証は求められず、PINの設定が求められるようになった。

もし、顔認証やPINの登録画面に遷移しない場合は、イベントビューアーにて「アプリケーションとサービスログ > Microsoft > Windows > User Device Registration > Admin」でエラーや警告メッセージが出てないか確認しよう。

特に、以下のような「Windows Hello for Business のプロビジョニング」に関するメッセージがログイン時に出力されているはず。

いくつかパターンがあるが、以下★箇所が「Yes」になっていれば、設定としては問題ないはず。しばらく時間を置くと解決したりする。

Windows Hello for Business のプロビジョニングが起動されます。 
デバイスは Microsoft Entra 参加済み (またはハイブリッド参加済み): Yes ★
ユーザーが Microsoft Entra 資格情報でログオンしました: Yes 
Windows Hello for Business ポリシーが有効になっています: Yes ★
Windows Hello for Business のログオン後のプロビジョニングが有効になっています: Yes 
このデバイスは Windows Hello for Business のハードウェア要件に合致しています: Yes ★
ユーザーがリモート デスクトップ経由でコンピューターに接続されていません: Yes 
オンプレミス認証ポリシーのユーザー証明書が有効になっています: No 
マシンは none ポリシーに準拠しています。 
オンプレミスの認証ポリシーに対するクラウドの信頼が有効になっています: Yes ★
ユーザー アカウントに Cloud to OnPrem TGT があります: Yes 
詳細については、https://go.microsoft.com/fwlink/?linkid=832647 を参照してください。

逆に言えば、1日放置しても解消されない場合は、何らかの前提条件が満たされていない可能性がある。その場合は、上記の★箇所でYesとなっていない箇所の前提が満たされているかを確認しよう。
※例えば、「ハイブリッド参加済み」の確認は、Entra管理センターやdsregcmd /statusコマンドで確認することができる。

以下はdsregcmd /statusの実行結果例となる。★箇所が「YES」であることを確認する。

+----------------------------------------------------------------------+
| Device State                                                         |
+----------------------------------------------------------------------+

             AzureAdJoined : YES ★
          EnterpriseJoined : NO
              DomainJoined : YES ★

以上で、Windows Hello for Business (WHfB) をクラウド信頼で構成する手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿