本地Windows Server AD中FIDO2密钥适配Windows Hello的实现问题
Windows Server Active Directory 配置FIDO2安全密钥实现Windows Hello登录
一、完整配置步骤
1. 确认环境要求
- 域控制器:Windows Server 2019(1809及以上)或Windows Server 2022
- 客户端:Windows 10 1903及以上、Windows 11
- 域功能级别:至少Windows Server 2016
- 操作账户需拥有Schema Admin和Enterprise Admin权限
2. 扩展AD架构
- 从Windows Server安装介质中找到
adprep工具(路径:\support\adprep\adprep.exe) - 在主域控制器上运行命令:
adprep /forestprep(完成林级架构扩展) - 接着运行:
adprep /domainprep(完成域级架构扩展) - 验证扩展结果:打开
adsiedit.msc,确认以下类和属性存在:- 类:
msDS-Fido2AuthenticationMethod - 属性:
msDS-Fido2PublicKeyBlob、msDS-Fido2UserDisplayName、msDS-Fido2CreationDateTime
- 类:
3. 配置域组策略
- 打开组策略管理控制台(GPMC),创建或编辑域级GPO
- 导航至
计算机配置 > 管理模板 > 系统 > 登录:- 启用**"启用基于FIDO的登录"**策略
- 启用**"配置Windows Hello for Business",设置为"使用证书或无信任的密钥"**(本地AD场景选无信任密钥)
- 导航至
计算机配置 > 管理模板 > Windows组件 > Windows Hello for Business:- 启用**"使用Windows Hello for Business替代密码"**
- 禁用**"要求使用生物识别"**(仅用安全密钥时无需开启)
- 客户端执行
gpupdate /force更新组策略
4. 注册FIDO2安全密钥到AD用户账户
- 以域用户身份登录客户端(需本地管理员权限)
- 打开设置 > 账户 > 登录选项 > 安全密钥 > 管理
- 点击**"添加"**,按提示插入安全密钥并设置PIN码(密钥支持时)
- 完成后,AD用户对象的
msDS-Fido2AuthenticationMethod属性会自动填充密钥信息
5. 测试登录
- 注销客户端,在登录界面选择安全密钥登录选项,插入密钥并输入PIN(如有设置),验证登录是否成功
二、已扩展架构但未生效的排查方案
针对扩展架构后无效果、Windows Hello未向AD DS发送查询的问题,按以下步骤排查:
- 验证架构扩展完整性
打开adsiedit.msc,连接到架构分区(CN=Schema,CN=Configuration,DC=yourdomain,DC=com),搜索msDS-Fido2AuthenticationMethod类,确认其存在且关联属性齐全;同时检查域功能级别是否为Windows Server 2016及以上(通过Active Directory域和信任关系查看)。 - 检查组策略应用状态
客户端运行gpresult /r,确认目标GPO已成功应用;打开gpedit.msc核对本地组策略中FIDO相关设置是否启用,必要时重启客户端确保策略生效。 - 确认AD DS权限配置
在Active Directory用户和计算机中,右键用户账户选择属性 > 安全 > 高级,检查用户是否拥有读取msDS-Fido2*系列属性的权限。 - 排查客户端环境
确认客户端系统版本符合要求且安装了最新累积更新;在服务管理器中检查Windows Hello Face Service、Windows Hello Pin Service是否正常运行;可通过设置 > 账户 > 登录选项 > Windows Hello PIN > 我忘记了我的PIN重置Hello环境后重新注册安全密钥。 - 抓包验证LDAP查询
用Wireshark在客户端抓包,过滤LDAP协议(端口389/636),触发Windows Hello登录流程,查看是否存在针对msDS-Fido2AuthenticationMethod属性的LDAP查询。若没有查询,需重新检查组策略中FIDO登录的启用配置。
内容的提问来源于stack exchange,提问作者behnam saki
相关产品推荐
相关产品推荐

