windows server中配置rd gateway双因素认证的官方推荐方案是rd gateway + nps + microsoft entra id mfa:rd gateway将认证转发至nps,nps通过entra id mfa扩展实现二次验证,需正确配置radius通信、时间同步、应用注册及网络策略。
在 windows server 系统中配置远程桌面网关(rd gateway)的双因素身份认证(mfa),核心是将 rd gateway 的认证请求交由支持 mfa 的后端服务处理,而非仅依赖本地 ad 密码。实际可行且官方推荐的路径是:通过网络策略服务器(nps)+ nps 扩展(nps extension for microsoft entra id)桥接至云 mfa 服务。这种方式无需修改 rd gateway 本身,兼容性好、审计完善、符合合规要求。
RD Gateway + NPS + Entra ID MFA 架构
RD Gateway 不直接集成 OTP 或生物识别,它把用户凭证转发给 NPS 进行策略判断。NPS 本身只做基础 RADIUS 认证,但通过安装并启用 NPS 扩展(Microsoft Entra ID MFA Extension),可让 NPS 在验证密码后,向 Entra ID 发起二次验证请求(如 Authenticator 推送、短信、电话或 TOTP)。整个流程对用户透明,只多一次确认动作。
- RD Gateway 配置为使用“RADIUS 身份验证”,指向内部 NPS 服务器(可部署在同一台或独立服务器上)
- NPS 安装并注册 Entra ID MFA 扩展,完成 Azure 应用注册、权限授权与密钥配置
- 在 NPS 中新建“网络策略”,启用“Microsoft Entra ID 多重身份验证”作为条件,并关联到 RD Gateway 的 NAS 标识(如 NAS IP 或名称)
- 确保 RD Gateway 服务器时间与 NPS、Entra ID 同步(建议统一设为 UTC),避免 TOTP 验证偏移
关键配置步骤(精简实操要点)
以下为必须执行的环节,跳过任一环节均会导致 MFA 不触发:
- 在 RD Gateway 服务器上:打开“远程桌面网关管理器” → 右键服务器 → “属性” → “授权”页 → 勾选“使用网络策略服务器(NPS)进行身份验证”,填入 NPS 服务器地址和共享密钥
-
在 NPS 服务器上:安装“网络策略和访问服务”角色;导入 Entra ID MFA 扩展 MSI;运行 PowerShell 注册扩展:
Register-NpsExtension -Name "Microsoft Entra ID MFA" -
在 Microsoft Entra 门户中:创建企业应用(类型为“非托管应用”或“SAML 应用”),配置 API 权限(
Directory.Read.All、Policy.Read.All),生成客户端密钥,记录应用 ID 和租户 ID - 在 NPS 策略中:勾选“授予访问权限”并启用“Microsoft Entra ID 多重身份验证”提供程序;设置“组”条件限定仅对 Remote Desktop Users 或指定安全组生效
替代方案:本地化 OTP(适用于离线/合规强控场景)
若无法连接公网(如涉密环境),可用本地 OTP 服务替代 Entra ID,但需额外组件:
- 部署开源 OTP 服务(如 MultiOTP 或 privacyIDEA)在内网服务器,支持 TOTP/HOTP 和 AD/LDAP 同步
- 在 NPS 上配置自定义 RADIUS 客户端,指向该 OTP 服务(需关闭 Entra ID 扩展)
- 修改 RD Gateway 的 RADIUS 属性映射,确保将用户名、密码、OTP 代码一同传给 NPS(部分 OTP 服务需在 NPS 中启用“EAP-TLS”或“PAP+CHAP”混合模式)
- 客户端需安装对应 Credential Provider(如 MultiOTP 提供的
multiOTP CredentialProvider),否则 Windows 登录界面不显示 OTP 输入框
验证与排障重点
MFA 配置后常见失败点集中在通信链路与时间同步:
- 检查 NPS 日志(事件查看器 → “网络策略和访问服务”)是否出现“拒绝访问”或“无匹配策略”错误
- 确认 RD Gateway 与 NPS 之间 UDP 1812/1813 端口开放,防火墙允许 RADIUS 流量
- Entra ID 扩展报错“Invalid client secret”通常因密钥过期或时钟偏差>5分钟;用
w32tm /resync强制校时 - 用户首次连接时未收到推送,检查其 Entra ID 个人资料中是否已注册 Authenticator 应用并启用“通知”权限











