はじめに
本記事では、FIDO2 セキュリティキー を使用して Active Directory ドメインアカウント で Windows にサインイン する方法を紹介します。
本件を検証する前に、色々と 下調べしたのですが、ローカルアカウント しかサポートしていない等の情報が多く引っ掛かって、成功例は 見当たらず、そもそも 無理なんじゃないかと諦めかけていました。
ですが、以下の公開情報を見つけて、頑張れば なんとかできるんじゃないかと思い、トライしてみました。
公開情報:FIDO2 セキュリティ キーを使用して Microsoft Entra ID による Windows 10 および 11 デバイスへのサインインを有効にする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-windows?wt.mc_id=mvp_407731
本記事のターゲット
「FIDO2 セキュリティキー を使用して Windows にサインイン」を有効化する方法は、いくつか用意されていますが、本記事では ④ の グループポリシー を使った手順を紹介します。
① Microsoft Intune で有効にする
② ターゲットとなる Microsoft Intune のデプロイ
③ プロビジョニング パッケージを使用して有効にする
④ グループ ポリシーで有効にする (Microsoft Entra ハイブリッド参加済みデバイスのみ)
公開情報:Windows サインインのセキュリティ キーを有効にする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-windows?wt.mc_id=mvp_407731#enable-security-keys-for-windows-sign-in
お知らせ
① の パターンは、別途 記事を投稿してありますので、併せて参照ください。
FIDO2 で Windows に サインインする(Entra Join 編)
https://qiita.com/carol0226/private/3933199bfd512e31f060
本構成の注意事項
以下の公開情報に書かれている通り、FIDO2 でサインインした場合に サポートされていない操作があります。
① Windows Server Active Directory Domain Services (AD DS) 参加済みの (オンプレミス専用デバイスの) デプロイ。
② セキュリティ キーを使用した リモート デスクトップ プロトコル (RDP)、仮想デスクトップ インフラストラクチャ (VDI)、Citrix のシナリオ。
③ セキュリティ キーを使用した S/MIME。
④ セキュリティ キーを使用した [別のユーザーとして実行] 。
⑤ セキュリティ キーを使用したサーバーへのログイン。
公開情報:サポートされていないシナリオ
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises?wt.mc_id=mvp_407731#unsupported-scenarios
② の問題の回避策
上記のうち、② の RDP については、Webauthn リダイレクト を使う事で 対処することができます。
構成方法は、以下の記事にまとめてあります。
前提事項
Active Directory ドメイン に参加した PC を、FIDO2 対応にするには、Microsoft Entra Hybrid 参加済み にする必要があります。そのほか、いくつかの要件を満たす必要があります。
以下の 公開情報 の 要件 の表で、右側の列が該当します。
上記の 公開情報 の 要件 を元にした結果、実施すべき内容を 以下の ①~④ としてまとめました。
① ドメインコントローラー
要件の欄には、以下の記載があります。
完全にパッチが適用された Windows Server 2016/2019 ドメイン コントローラー
具体的には FAQ に 以下の情報があるので、これら KB のインストールが必要なようです。
なお、私は Windows Server 2022 で検証して動作しているので、それ以降の最新 OS であればサポートしていそうです。
公開情報:パッチを適用すべき DC の数に関する推奨事項はありますか
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-faqs?wt.mc_id=mvp_407731#whats-the-recommendation-on-the-number-of-dcs-that-should-be-patched
(公開情報より抜粋)
Windows Server 2016 または 2019 ドメイン コントローラーで、次のパッチが適用されていることを確認します。 必要に応じて、Windows Update を実行してインストールします。
Windows Server 2016 - KB4534307
Windows Server 2019 - KB4534321
② Microsoft Entra Hybrid 参加済み デバイス
以下の記事を参考に Microsoft Entra Hybrid 参加済み(Microsoft Entra Hybrid Joined)となったデバイスがあれば、要件が満たされます。
Microsoft Entra ハイブリッド参加(旧HAADJ)を構成してみた
https://qiita.com/carol0226/items/7c16c4813e2b54a76789
※Windows 10 バージョン 2004 以降が必要です。
Microsoft Entra Hybrid Join とは
オンプレミスの AD ドメイン を、Microsoft Entra Connect で同期を構成します。
さらに、Hybrid Join の構成を行うことで コンピューターオブジェクト も テナントに同期されるようになります。Hybrid Join が構成された環境で クライアント PC は、"AD ドメイン" と "Microsoft Entra ID" に 同時に参加(Join)した状態になります。これを Hybrid Join と言います。
Hybrid Join で構成された PC へのサインインは、引き続き オンプレミスドメイン のユーザーアカウントでサインインしますが、 FIDO2 セキュリティ キー の紐づけは、テナント 側で行う必要があります。
そのため、FIDO2 サインインが可能になるのは、テナント側に同期された ハイブリッドユーザー のみとなります。
③ Microsoft Entra ハイブリッド認証管理モジュール
初めて構成する際に 公開情報 を読んだだけだと、この要件を満たす方法が判りづらいかもしれません。
具体的には、Microsoft Entra Kerberos 認証の構成を行うことで対応できます。
以下の私の記事で解説していますので、この作業を行ってください。
Microsoft Entra Kerberos 認証 を構成し オンプレミスへ SSO する
https://qiita.com/carol0226/items/a52a54ff63c19fa957e6
公開情報:オンプレミスのリソースへの SSO
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises?wt.mc_id=mvp_407731
④ テナントで FIDO2 セキュリティー キー を有効化
以下の記事で紹介している内容で テナントで FIDO2 セキュリティー キー が利用できるように構成され、オンプレミスから同期された ハイブリッドユーザー に FIDO2 セキュリティ キー が割り当てられている必要があります。
Microsoft Entra ID の認証を FIDO2 で出来るようにする
https://qiita.com/carol0226/private/8586291079d941f62f7b
構成手順
前提条件を満たしていれば、① GPO または ② Intune の構成によって、FIDO2 での OS サインイン がサポートされるようになります。
どちらで構成するのか、判断材料
クライアントが オンプレミス のみであったり、Intune を採用していない場合は、① GPO で構成します。
すでに Microsoft Entra Join デバイス も併用しており、Intune が利用可能な環境の場合は、② Intune で構成が良さそうです。
① GPO で構成する
FIDO2 サインイン を行いたい コンピューターオブジェクトが含まれた OU が用意されている前提です。
※本記事では、Client-PC という OU を想定した手順となっています。
- ドメインコントローラーで グループポリシーの管理 を開きます。
- 任意の OU に対して このドメインに GPO を作成し、このコンテナーにリンクする を選択します。
- 任意の GPO 名を指定して OK を押します。(今回は、FIDO2 を命名)
- 作成された GPO を右クリックして 編集 を選択します。
- 以下の設定を開きます。
コンピューターの構成 - ポリシー - 管理用テンプレート - システム-ログオン
セキュリティ キーでのサインインを有効にする
- 設定を 有効 にして OK を押します。
- 以下のように表示されれば OK です。
公開情報:グループ ポリシーを使用して有効にする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-windows?wt.mc_id=mvp_407731#enable-with-group-policy
② Microsoft Intune で有効にする
なお、公開情報 の 要件 を読む限りは、GPO の代わりに Intune で構成することも可能なようです。
公開情報:Microsoft Intune で有効にする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-windows?wt.mc_id=mvp_407731#enable-with-microsoft-intune
以下の記事では、Microsoft Entra ID を使って Windows にサインインする方法を記載した記事です。
すでに、この構成を行っている場合は、Intune で設定が行われているため、GPO の設定は割愛できると思われます。
FIDO2 で Windows に サインインする(Entra ID 編)
https://qiita.com/carol0226/items/3933199bfd512e31f060
動作確認
FIDO2 セキュリティ キーを使用してサインインする
- 前章で GPO または Intune の構成を変更したあと、AD ドメイン に参加したデバイスを再起動します。
- ポリシー設定が PC にうまく反映されると、緑下線の サインイン オプション を押した際に、以下の通り 赤枠(セキュリティキー)のアイコンが追加されます。
※設定の反映にタイムラグがありえますが、私は 10 分後くらいに反映されてました。セキュリティキー のアイコンが出ない場合は、再起動してください。
いくらやっても、FIDO2 セキュリティ キー のアイコンが出ない場合
前提条件 が満たせていないと、アイコンは出ません。
手順の見直しと、以下の方法でも、構成をチェックしてください。
dsregcmd /status のコマンドを実行して、Hybrid Joined の構成になっているのか?
gpresult /h を使って、ポリシーがクライアントに適用されているか?
このほか、最終章に トラブルシューティング へのリンクを掲載しているので、そちらも確認してください。
以下の記事でも紹介されていますが、VPN 接続してから、ドメインコントローラーに接続するようなケースでは、利用中に セキュリティキーのアイコンが消えることもあります。dsregcmd /join で再度 Join することで復活できます。
https://jpazureid.github.io/blog/azure-active-directory/fq-device-based-ca-for-remote-work/#質問-4-ハイブリッド-Azure-AD-参加のデバイス登録処理はどのような流れで行われますか?-VPN-経由でも動作しますか?
3.以下の画面が FIDO2 で OS にサインインできる画面です。
ここで、FIDO2 セキュリティ キー を挿入して PIN を入力します。
※アカウント名を入力しなくても良いんですね・・・(キー内に ID も保存されている)
4.正しい PIN が入力されたら、以下の画面が表示されます。
5.FIDO2 セキュリティ キー に 指タッチします。
下図は、私が検証した YubiKey です。この時に ランプが点灯しています。
6.これで 以下の画面に遷移されて ドメインログオン が完了します。
以上のように、あらかじめ FIDO2 セキュリティ キー に ハイブリッドユーザー の アカウント が登録されていれば、パスワードレス で サインイン することが可能になります。
公開情報:FIDO2 セキュリティ キーを使用してサインインする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-windows?wt.mc_id=mvp_407731#sign-in-with-fido2-security-key
サインイン直後の状態確認
dsregcmd /status コマンドを実行して、以下の値を確認できれば良いと思います。
こうなっていれば、テナントから チケットを正常に取得できています。
項目名 | ステータス |
---|---|
AzureAdJoined | YES |
DomainJoined | YES |
AzureAdPrt | YES |
OnPremTgt | YES |
CloudTgt | YES |
dsregcmd /status の実行結果を見るには ココ をクリック
PS C:\Users\testnogu> dsregcmd /status
+----------------------------------------------------------------------+
| Device State |
+----------------------------------------------------------------------+
AzureAdJoined : YES
EnterpriseJoined : NO
DomainJoined : YES
DomainName : AVD
Virtual Desktop : NOT SET
Device Name : SurfacePro6.avd.server-on.net
+----------------------------------------------------------------------+
| Device Details |
+----------------------------------------------------------------------+
DeviceId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Thumbprint : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DeviceCertificateValidity : [ 2024-12-17 22:32:46.000 UTC -- 2034-12-17 23:02:46.000 UTC ]
KeyContainerId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
KeyProvider : Microsoft Platform Crypto Provider
TpmProtected : YES
DeviceAuthStatus : SUCCESS
+----------------------------------------------------------------------+
| Tenant Details |
+----------------------------------------------------------------------+
TenantName : Qiita
+----------------------------------------------------------------------+
| User State |
+----------------------------------------------------------------------+
NgcSet : YES
NgcKeyId : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
CanReset : DestructiveOnly
WorkplaceJoined : NO
WamDefaultSet : YES
WamDefaultAuthority : organizations
WamDefaultId : https://login.microsoft.com
WamDefaultGUID : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (AzureAd)
+----------------------------------------------------------------------+
| SSO State |
+----------------------------------------------------------------------+
AzureAdPrt : YES
AzureAdPrtUpdateTime : 2024-12-29 05:10:28.000 UTC
AzureAdPrtExpiryTime : 2025-01-12 05:10:34.000 UTC
AzureAdPrtAuthority : https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
EnterprisePrt : NO
EnterprisePrtAuthority :
OnPremTgt : YES
CloudTgt : YES
KerbTopLevelNames : .windows.net,.windows.net:1433,.windows.net:3342,.azure.net,.azure.net:1433,.azure.net:3342
+----------------------------------------------------------------------+
| Diagnostic Data |
+----------------------------------------------------------------------+
AadRecoveryEnabled : NO
Executing Account Name : AVD\testnogu, testnogu@carol226.com
KeySignTest : PASSED
DisplayNameUpdated : YES
OsVersionUpdated : YES
HostNameUpdated : NO
Last HostName Update : FAIL
Client ErrorCode : 0x801c0083
Client Time : 2024-12-28 19:00:50.000 UTC
Request ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Server Time : 2024-12-28T19:00:51.7897386Z
HTTP Status : 400
Server ErrorCode : directory_error
Server ErrorSubcode : error_hostname_duplicate
Server Message : Value of unique property 'HostNames' is already in use by 'Device' with ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.
+----------------------------------------------------------------------+
| IE Proxy Config for Current User |
+----------------------------------------------------------------------+
Auto Detect Settings : YES
Auto-Configuration URL :
Proxy Server List :
Proxy Bypass List :
+----------------------------------------------------------------------+
| WinHttp Default Proxy Config |
+----------------------------------------------------------------------+
Access Type : DIRECT
ドメインリソースへの SSO での アクセス確認
正しく構成されていれば、サインインしたあとに、ドメイン環境のファイルサーバー(ドメコンの SYSVOL も可)にアクセスしたり、gpupdate コマンドで ポリシーを更新したりすると、正常に動作していることを確認できます。
正常な場合の振る舞い
ドメイン内のファイル共有にアクセスした場合に、認証なしで表示されます。
構成に問題があった場合の振る舞い
ドメイン内のファイル共有にアクセスした際に、以下のように 認証窓が開いてしまいます。
チケットの状態をみても、いつまで経っても Kerberos チケットが取得されません。
原因
私も、この状況に陥ってハマっていたことがあるのですが、テストに使ったユーザーが Domain Admins に所属していることが原因でした。
上記 FAQ の URL
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-faqs?wt.mc_id=mvp_407731#fido2-security-key-sign-in-isnt-working-for-my-domain-admin-or-other-high-privilege-accounts-why
対処策①
テストに使うユーザーから、Domain Admins の権限を剥奪して、再度 テストを行ったら、問題なく SSO でアクセスできるようになります。
対処策②
Domain Admins でも SSO でアクセスできるようにするための方法が、FAQ に対策が記載されているのですが、これが非常に判りづらくて、どう対処したら良いのか判りませんでしたが、以下に紹介する 対処手順 を参考に作業してもらえれば OK です。
色々調査してみましたが、以下の構成を行うことを示唆しているようです。
誤) Microsoft Entra Kerberos Computer オブジェクト
正) AzureADKerberos コンピューターオブジェクト
対処策②の手順
- Active Direcotry ユーザーとコンピューター(ADUC) を開き 拡張機能 を有効にしておきます。(黄枠の箇所がチェック ON )
※これで、属性エディター のタブが表示されるようになります。
- Domain Controllers コンテナーを開き、AzureADKerberos というコンピューターオブジェクトを右クリックして プロパティ を開きます。
-
属性エディター タブを選択して msDS-NeverRevealGroup という項目を選択して 編集 を押します。
- この属性は このグループに所属しているユーザーは、Microsoft Entra Kerberos の対象外となってしまいます。今回は、Domain Admins と Administrators を削除します(再度 追加すれば元に戻ります)
- 削除したら OK を押して終了します。
私の環境では、上記の 属性編集を行ったあと、該当のユーザー環境から ファイル共有へアクセスしてみたら、すぐに 参照できるように改善しました。
さいごに
今回の検証は、結構 達成感がありました。
実際に動作させてみるまでは、どうやって オンプレドメイン の資格情報を FIDO2 内に入れるんだろう・・と疑問に思っていたのですが、結果 クラウド経由で仕込んでおいて、Microsoft Entra Kerberos 認証 を使って ドメインログオンしてるんだな・・・ということが判った気がします。
これをやりたいと思っても、巷の情報で、中々 成功事例を見つけられなかったのですが、本記事を参考にチャレンジしてみていただければ幸いです。
Next Step
注意事項の欄にも書きましたが、FIDO2 でログオンした場合、RDP 接続 には SSO できないため、パスワードを使用する必要があります。
RDP 接続も パスワードレス 化するには、以下の記事を参考に構成してみてください。
この構成は、本記事(FIDO2 ドメインログオン)との相性抜群ですので 是非 セットで 構成しましょう。
参考
以下の公開情報で、FAQ や トラブルシューティング が掲載されています。
これは、構築後に動作確認した後のタイミングで良いので、目を通しておくと その後の運用時に無駄にハマらずに済むかもしれません。
参考情報
上記の FAQ のうち、以下の件について、コマンド実行時の結果を掲載しておきます。
私の正常動作している環境で取得したキャプチャですので、これと比べて 相違がないかどうかの判断に利用できるかもしれません。
公開情報:FIDO2 セキュリティ キーを使用してサインインし、資格情報のプロンプトを受け取った後、ユーザーが my NTLM ネットワーク リソースへの SSO を取得できない
nltest /dsgetdc:[dc name] /keylist /kdc
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-troubleshoot?wt.mc_id=mvp_407731#users-are-unable-to-get-sso-to-my-ntlm-network-resource-after-signing-in-with-a-fido2-security-key-and-receiving-a-credential-prompt
※上記の 緑枠 は、ドメイン名 に置き換えてください。
関連情報
ハマった時には、以下の記事も参考にしました。
Yubico : Phishing-Resistant Authentication for hybrid environments with AD and Azure AD using FIDO2
Hybrid Join 環境で Yubikey を扱う為のドキュメントです。