RDP(远程桌面协议)相关的常见事件 ID 汇总,以及它们通常表示的含义。在 PowerShell 中实现记录远程桌面(RDP)会话数据可以通过以下步骤来实现。这些步骤涵盖了如何捕获会话连接和断开事件,并将相关信息记录到文件中。

[MS-RDPEWA] 远程桌面协议:WebAuthn 虚拟通道协议 官方文档中文完整翻译

文档简介

本规范定义远程桌面协议(RDP):WebAuthn 虚拟通道协议,该协议提供一套可在 RDP 会话内执行 WebAuthn 身份认证操作的传输机制。
 
协议工作逻辑:远程服务端下发 WebAuthn 认证请求至客户端;客户端接收请求后,对接各类身份验证器(平台内置验证器、跨平台硬件密钥验证器均可)完成校验,并将认证结果回传给服务端。
本页面及配套文档内容会频繁更新,建议订阅 RSS 推送以接收版本更新通知。

正式发布版本

发布日期 协议版本 更新等级 下载资源
2026 年 03 月 30 日 3.0 重大更新 PDF 文档 | DOCX 文档
点击此处下载全部 Windows 协议 PDF 文档压缩包

历史旧版本

发布日期 协议版本 更新等级 下载资源
2024 年 04 月 23 日 2.0 重大更新 PDF | DOCX | 版本差异对比文件
2022 年 11 月 08 日 1.0 无分级更新 PDF | DOCX
2022 年 09 月 03 日 1.0 全新初稿 PDF | DOCX

预览版本

微软会不定期发布开放规范技术文档的预览 / 预发行版本,供行业查阅、反馈问题。
 
如需针对预览版提交修改建议,请遵照文档内标注的反馈指引;若无专属指引,可前往「开放规范论坛」提交反馈。
技术文档的预览周期不固定,并非所有协议文档都会推出预览版本。
 
预览版文档可在「Windows 协议 - 预览文档专区」查阅;预览阶段结束后,本页面将提供该协议最新正式版文档。

开发配套资源

如需开发与微软软件、云服务、硬件及第三方产品互通兼容的解决方案,可查阅以下资源:
  • 技术互通展会与活动
  • 协议配套测试工具
  • 开发技术支持
  • 开放规范开发者中心

开放规范文档知识产权声明

1. 技术文档说明

微软发布本系列开放规范文档,覆盖网络协议、文件格式、数据互通标准、编程语言及行业通用标准;同时配套概述文档,说明各类协议之间的关联与交互逻辑。

2. 版权说明

本文档受微软版权保护。
 
无论承载本文档的微软官网使用条款如何约定,使用者均可复制本文档,用于开发文档内描述的技术实现方案;也可在自研产品、配套说明文档中转载本文档部分内容,用于完整说明技术实现逻辑。
 
文档内包含的架构定义、接口定义(IDL)、代码示例,可直接在自研产品中原样或修改后分发;本授权同样适用于文档中引用的其他外部规范文件。

3. 无商业秘密声明

微软未将本文档内容认定为商业秘密,不主张相关商业秘密权利。

4. 专利相关声明

微软持有可覆盖本文档所述技术的相关专利。
 
本声明、文档交付行为均不授予使用者任何微软专利授权
 
但单份开放规范文档可能受《微软开放规范承诺》或《微软社区承诺》约束;若您需要书面专利许可,或本文档技术不在上述两项承诺覆盖范围内,可发送邮件至 iplg@microsoft.com 申请专利授权。

5. 许可方案索引

如需查看某一许可协议覆盖的全部协议清单及对应专利,可访问专利映射页面。

[MS-RDPEWA] 远程桌面协议:WebAuthn 虚拟通道协议 完整中文翻译

文档版本:2026 年 3 月 30 日 3.0 主版本更新
 
版权 © 2026 Microsoft Corporation

目录

1 简介 ........................................................................................ 5
 
1.1 术语表 ................................................................................... 5
 
1.2 引用文档 ............................................................................ 5
 
1.2.1 标准强制引用 ....................................................................... 5
 
1.2.2 参考补充引用 ........................................................................ 6
 
1.3 概述 .......................................................................................................... 6
 
1.4 适用范围说明 ....................................................................................... 6
 
1.5 与其他协议关系 ............................................................................ 6
 
1.6 前置运行条件 ................................................................................. 6
 
1.7 版本与能力协商 ................................................................... 6
 
1.8 厂商可扩展字段 ..................................................................................... 7
 
1.9 标准分配值 ....................................................................................... 7
2 消息规范 ......................................................................................................... 8
 
2.1 传输层 .......................................................................................................... 8
 
2.2 消息语法 ................................................................................................. 8
 
2.2.1 WebAuthN_Channel 请求消息 ............................................................. 8
 
2.2.1.1 webAuthNPara 映射结构体 ....................................... 11
 
2.2.1.2 CTAPCBOR_CMD_MAKE_CREDENTIAL 创建凭证请求 ......... 13
 
2.2.1.3 CTAPCBOR_CMD_GET_ASSERTION 获取断言请求 ............... 15
 
2.2.2 WebAuthN_Channel 响应消息 ......................................................... 15
 
2.2.2.1 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应总映射 .......................... 16
 
2.2.2.1.1 CTAP MakeCredential 创建凭证响应 ......................................................... 18
 
2.2.2.1.2 CTAP GetAssertion 获取断言响应 ............................................................ 18
 
2.2.2.2 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 查询凭证响应映射 ................. 19
 
2.2.2.3 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 查询验证器列表响应映射 ..... 21
3 协议详细流程 ..................................................................................................... 23
 
3.1 客户端与服务端逻辑 ................................................................................... 23
 
3.1.1 抽象数据模型 .................................................................................... 23
 
3.1.2 计时器 ...................................................................................................... 23
 
3.1.3 通道初始化 ............................................................................................... 23
 
3.1.4 上层触发事件 ..................................................................... 23
 
3.1.5 消息处理与时序规则 .......................................... 23
 
3.1.6 计时器事件 .............................................................................................. 23
 
3.1.7 其他本地事件 ...................................................................................... 23
4 协议交互示例 ................................................................................................. 24
 
4.1 CTAPCBOR_RPC_COMMAND_API_VERSION 查询 API 版本
 
4.1.1 请求 ..................................................................................................... 24
 
4.1.2 响应 ................................................................................................... 24
 
4.2 CTAPCBOR_RPC_COMMAND_IUVPAA 查询平台验证器支持
 
4.1.1 请求 ..................................................................................................... 24
 
4.1.2 响应 ................................................................................................... 24
 
4.3 CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP 取消当前操作
 
4.3.1 请求 ..................................................................................................... 25
 
4.3.2 响应 ................................................................................................... 25
 
4.4 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 核心 WebAuthn 指令
 
4.4.1 CTAPCBOR_CMD_MAKE_CREDENTIAL 创建凭证
 
4.4.1.1 请求 ............................................................................................... 25
 
4.4.1.2 响应 ............................................................................................. 27
 
4.4.2 CTAPCBOR_CMD_GET_ASSERTION 获取断言
 
4.4.2.1 请求 ............................................................................................... 29
 
4.4.2.2 响应 ............................................................................................. 31
 
4.5 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 查询已有凭证
 
4.5.1 请求 ..................................................................................................... 32
 
4.5.2 响应 ................................................................................................... 33
 
4.6 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 枚举验证器
 
4.6.1 请求 ..................................................................................................... 35
 
4.6.2 响应 ................................................................................................... 35
5 安全章节 ................................................................................................................. 37
 
5.1 协议实现者安全注意事项 ........................................................... 37
 
5.2 安全参数索引 ............................................................................ 37
附录 A 产品兼容行为 ............................................................................... 38
 
7 变更跟踪记录 .................................................................................................... 39
 
8 索引 ..................................................................................................................... 41

1 简介

本规范定义「远程桌面协议:WebAuthn 虚拟通道协议」,提供一套可在 RDP 会话内执行 WebAuthn 身份认证的传输机制。
 
远程服务端可下发 WebAuthn 认证请求至本地客户端;客户端接收请求后,对接各类身份验证器(平台内置验证器、跨平台硬件密钥均可)完成校验,并将认证结果回传给远程 RDP 服务端。
规范第 1.5、1.8、1.9、2、3 章节为强制标准章节,其余章节、示例仅作参考说明。

1.1 术语表

全局唯一标识符 (GUID):微软协议文档中与 UUID 同义,文档交替使用两种术语,不强制限定生成算法;无需严格遵循 RFC4122/C706 规范生成。
 
远程桌面协议 (RDP):多通道协议,允许客户端连接运行终端服务的 Windows 主机;支持客户端 / 服务端配置协商、输入输出、图形数据交互。
 
传输控制协议 (TCP):IP 配套可靠传输协议,用于分段报文跨网络传输。
 
大写关键字 MAY / SHOULD / MUST / SHOULD NOT / MUST NOT 遵循 RFC2119 定义的强制等级规范。

1.2 引用文档

微软开放规范库内链接均指向对应文档最新版本段落;但各文档更新不同步,段落编号可能出现偏差,可通过勘误文档核对正确行号。

1.2.1 强制标准引用(协议实现必须遵循)

[FIDO-CTAP] FIDO 客户端至验证器协议标准
 
[IETF RFC8949] CBOR 紧凑二进制对象表示法
 
[MS-ERREF] Windows 系统错误码规范
 
[RFC2119 需求关键字标准]
 
[W3C-WebAuthPKC2] WebAuthn 二级公钥凭证标准
 
[W3C-WebAuthPKC3] WebAuthn 三级公钥凭证标准

1.2.2 参考补充引用(仅作说明,非强制实现)

微软 WebAuthn 开发头文件 webauthn.h、KB5065789 系统更新说明文档

1.3 概述

MS-RDPEWA 依托 RDP 动态虚拟通道,实现远程会话调用本地客户端 WebAuthn 硬件密钥(Windows Hello/YubiKey 等)。
 
流程:远程页面发起 WebAuthn 请求 → RDP 服务端下发虚拟通道报文 → 客户端解析报文调用本地 WebAuthn API → 硬件密钥签名 → 签名结果原路通过 RDP 虚拟通道回传远程页面。
 
底层 CTAP 协议完成硬件密钥交互,本协议封装 CTAP 报文在 RDP 内部传输。

1.4 适用范围

仅运行在已完成 RDP 动态虚拟通道 (DVC) 初始化的 RDP 会话内部。
 
协议为报文驱动型,要求完整报文一次性送达,不支持分片、丢包重传机制。

1.5 与其他协议依赖关系

上层依赖:W3C WebAuthn 2/3 标准、FIDO CTAP 底层硬件交互协议。

1.6 前置运行条件

  1. RDP 会话必须完成动态虚拟通道 (DVC) 握手;
  2. 底层 TCP 可靠传输链路正常;
  3. 客户端系统支持 WebAuthn 原生 API(Win10 1809+/Win11)。

1.7 版本与能力协商

通道建立阶段协商 MS-RDPEWA 协议版本;客户端不支持本协议时,拒绝创建 WebAuthN_Channel 虚拟通道。

1.8 厂商可扩展字段

协议使用 Windows 原生 HRESULT 错误码,取值遵循 MS-ERREF 规范 2.2 节;厂商扩展错误码建议复用现有定义,避免数值冲突。

1.9 标准分配

无固定全局标准分配值。

2 消息规范

2.1 传输层

专属虚拟通道名称:WebAuthN_Channel
 
底层必须依托 TCP 可靠有序传输;所有请求 / 响应报文必须完整送达,不支持分段处理。

2.2 消息语法

所有请求、响应报文统一使用CBOR 二进制编码 (RFC8949),原因:CTAP 硬件交互协议原生采用 CBOR,统一编码减少转换开销。
 
报文分为两大类:请求报文、响应报文,均为 CBOR 映射 (Map) 结构,内部嵌套子映射承载业务参数。

2.2.1 WebAuthN_Channel 请求消息

顶层 CBOR 映射,核心键说明:
  1. command 命令码(无符号整数)
    数值 指令含义
    5 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 核心 WebAuthn 操作(注册 / 登录断言)
    6 CTAPCBOR_RPC_COMMAND_IUVPAA 查询平台验证器是否可用(对应 WebAuthn IsUserVerifyingPlatformAuthenticator API)
    7 CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP 取消当前正在执行的 WebAuthn 操作
    8 CTAPCBOR_RPC_COMMAND_API_VERSION 查询系统 WebAuthn 接口版本
    9 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 查询本地已存储凭证信息
    12 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 枚举本机所有 FIDO 验证器(USB/Windows Hello)
  2. flags 位掩码标志(无符号整数,多标志异或组合)
    标志常量 数值 作用
    CTAPCLT_U2F_FLAG 0x00020000 使用旧 U2F 兼容模式
    CTAPCLT_DUAL_FLAG 0x00040000 优先 CTAP,失败自动降级 U2F
    CTAPCLT_CLIENT_PIN_REQUIRED_FLAG 0x00100000 强制要求客户端 PIN 码验证
    CTAPCLT_SELECT_CREDENTIAL_ALLOW_UV_FLAG 0x00008000 登录断言允许用户核验
    CTAPCLT_UV_REQUIRED_FLAG 0x00400000 必须执行用户核验(指纹 / 人脸 / PIN)
    CTAPCLT_UV_PREFERRED_FLAG 0x00800000 优先执行用户核验,无则跳过
    CTAPCLT_UV_NOT_REQUIRED_FLAG 0x01000000 无需用户核验
    CTAPCLT_HMAC_SECRET_EXTENSION_FLAG 0x04000000 启用 HMAC 密钥扩展
    CTAPCLT_FORCE_U2F_V2_FLAG 0x08000000 强制 U2F v2 协议
  3. request 二进制字节串:承载子命令完整 CBOR 报文
    • API 版本 / 查询验证器类指令:该字段省略
    • 取消操作:存放操作事务 GUID
    • WEB_AUTHN 主指令:首字节为子命令码(0x1 创建凭证 / 0x2 获取断言),后续为 CTAP 标准 CBOR 映射
  4. rpId 依赖方域名字符串:仅查询凭证指令使用,指定站点域名
  5. authenticatorInfoLogoRequestType 验证器图标请求类型
     
    0 = 无需图标、1 = 浅色主题图标、2 = 深色主题图标、3 = 全部图标
  6. hmacSecretSaltValues HMAC 扩展盐值二进制
  7. thirdPartyPayment 布尔:是否第三方支付凭证
  8. clientDataJSON WebAuthn 客户端上下文 JSON 二进制
  9. remoteWebAuthn 布尔:标记为远程 RDP WebAuthn 调用
  10. filterHybridTransport 布尔:是否过滤混合传输模式
  11. timeout 操作超时毫秒数
  12. transactionId 事务 GUID 二进制,用于匹配请求 / 响应
  13. webAuthNPara CBOR 映射:WebAuthn 通用参数结构体

2.2.1.1 webAuthNPara 子映射(通用参数)

类型 说明
wnd 窗口句柄数值:WebAuthn 弹窗绑定本地窗口  
attachment 验证器类型:0 任意 / 1 平台内置 (Hello)/2 跨平台 USB 密钥  
requireResident 是否要求驻留密钥(设备内持久存储凭证)  
preferResident 优先使用驻留密钥  
userVerification 用户核验策略枚举  
attestationPreference 证明方式偏好  
enterpriseAttestation 企业级证明模式  
cancellationId 取消操作唯一 ID  
credLargeBlobOperation 大二进制存储操作类型  
credLargeBlob 大 Blob 数据  
largeBlobSupport 大 Blob 支持等级  
transportHint 传输类型提示字符串  

2.2.1.2 CTAPCBOR_CMD_MAKE_CREDENTIAL 创建凭证子报文

遵循 FIDO CTAP 5.1 节规范,CBOR 映射数字键定义:
 
1 clientDataHash 客户端哈希
 
2 RP 依赖方信息
 
3 用户账号信息
 
4 加密算法列表
 
5 excludeList 排除已有凭证(可选)
 
6 extensions 扩展字段(可选)
 
7 options 操作选项(可选)

2.2.1.3 CTAPCBOR_CMD_GET_ASSERTION 获取登录断言子报文

遵循 FIDO CTAP 5.2 规范,用于站点登录签名;数字键:
 
1 rpId 依赖方域名
 
2 clientDataHash 客户端哈希
 
3 allowCredentials 允许凭证列表(可选)
 
4 extensions 扩展
 
5 excludeList 排除凭证(可选)

2.2.2 WebAuthN_Channel 响应消息

固定头部:32 位 HRESULT 状态码(0 = 成功,非 0 为 Windows 错误),后跟可变长度 CBOR 载荷。
 
不同命令对应不同载荷结构:
  • API_VERSION:4 字节小端无符号整数(版本号)
  • IUVPAA:4 字节布尔(1 = 支持平台验证器)
  • CANCEL_CUR_OP:无额外载荷,仅 HRESULT
  • WEB_AUTHN:CTAP 操作完整 CBOR 响应映射
  • GET_CREDENTIALS:凭证数组 CBOR
  • GET_AUTHENTICATOR_LIST:验证器信息数组 CBOR

2.2.2.1 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 通用响应映射

顶层字段:
  1. deviceInfo 验证器硬件信息(厂商、型号、AAGUID、传输协议)
  2. residentKey 是否驻留密钥
  3. uvStatus 用户核验结果码
  4. uvRetries PIN 重试剩余次数
  5. credWithHmacSecret 支持 HMAC 密钥标识
  6. thirdPartyPayment 支付凭证标记
  7. transports 硬件传输类型掩码 (HID/NFC/BLE)
  8. status CTAP 底层操作状态码
  9. response CTAP 原生响应 CBOR(MakeCredential/GetAssertion 二选一)
2.2.2.1.1 MakeCredential 创建凭证响应
CTAP 标准注册返回结构:签名、证书链、公钥凭证等二进制数据。
2.2.2.1.2 GetAssertion 登录断言响应
包含用户公钥签名、客户端数据哈希、凭证 ID,用于服务端验签。

2.2.2.2 GET_CREDENTIALS 凭证列表响应

CBOR 数组,每条凭证映射包含:版本、凭证 ID、依赖方、用户信息、是否可移除、备份状态、硬件名称、支付标识、支持传输协议。

2.2.2.3 GET_AUTHENTICATOR_LIST 验证器列表响应

枚举本机所有 FIDO 硬件:设备 ID、名称、图标、是否锁定。

3 协议详细流程

3.1 客户端与服务端逻辑

3.1.1 抽象数据模型

无持久全局数据结构,报文单次处理后释放。

3.1.2 计时器

仅用于操作超时自动取消,无后台定时任务。

3.1.3 初始化

RDP DVC 虚拟通道协商成功后注册 WebAuthN_Channel 通道处理器。

3.1.4 上层触发事件

远程页面 JS WebAuthn 调用 → RDP 服务端生成 MS-RDPEWA 请求报文下发通道。

3.1.5 消息处理时序

1 客户端接收通道 CBOR 请求;
 
2 解析 command 指令;
 
3 调用系统 WebAuthn/CTAP API;
 
4 捕获硬件弹窗用户交互;
 
5 生成响应 CBOR;
 
6 通过虚拟通道回传给 RDP 服务端。

3.1.6 计时器事件

超时触发 CANCEL_CUR_OP 取消指令,终止硬件弹窗。

3.1.7 其他本地事件

硬件密钥插拔、用户关闭验证弹窗自动生成取消响应。

4 协议交互示例

文档内附各命令完整 CBOR 十六进制报文、文本可读映射示例(长二进制示例原文省略重复展示),覆盖:
 
查询 API 版本、检测平台验证器、取消操作、注册凭证、登录断言、查询存储凭证、枚举硬件密钥七类完整请求 + 响应样例。

5 安全规范

5.1 实现者安全注意事项

  1. 所有 WebAuthn 报文全程依托 RDP TLS 加密通道,禁止明文传输;
  2. 用户人脸 / 指纹 / PIN 核验弹窗必须本地交互,远程不可静默绕过;
  3. 事务隔离:transactionId 隔离多并发 WebAuthn 请求,防报文混淆;
  4. 硬件私钥永不离开本地验证器,RDP 仅传输签名结果;
  5. 过滤混合传输模式,阻断不安全蓝牙 / NFC 远程转发;

5.2 安全参数索引

无独立安全参数注册表,安全约束全部内置报文标志位。

附录 A 产品兼容范围

支持系统:Win10 1809、Win11 全版本、Server2019/2022/2025;
 
24H2 + 系统新增GET_CREDENTIALS/GET_AUTHENTICATOR_LIST两条扩展指令(KB5065789 更新包)。

7 变更跟踪

3.0 版本(2026-03-30)重大更新:
  1. 新增查询本地凭证 RPC 指令;
  2. 新增枚举 FIDO 验证器指令;
  3. 扩展 webAuthNPara 大 Blob、企业证明字段;
  4. 全章节报文示例同步更新 CBOR 样例。

8 索引

术语、章节快速检索索引(略)

知识产权声明(全文通用翻译)

技术文档说明

微软发布本开放规范文档,覆盖协议、文件格式、数据互通标准;配套概述文档说明多协议交互关系。

版权

本文档受微软版权保护。使用者可复制文档用于自研方案开发;允许在自有产品、说明文档内转载片段;文档内 IDL、架构、代码示例可修改分发,引用子文档同样适用本授权。

无商业秘密声明

微软不将本文档内容视为商业秘密,不主张商业秘密相关权利。

专利说明

微软拥有覆盖本规范实现的相关专利;本文档交付不授予任何专利许可。若需要书面专利授权,可发送邮件iplg@microsoft.com;部分协议受微软开放规范承诺 / 社区承诺覆盖。

许可映射

专利映射页面可查询各协议对应的专利覆盖清单。

商标

文档内企业、产品名称可能为注册商标;本文档不授予商标使用许可,微软商标清单官网可查。

虚构内容提示

文档示例公司、域名、人物、设备均为虚构,无真实对应主体。

权利保留

除本文明确授予权限外,所有权利归微软所有,不通过默示、禁止反言授予额外权限。

开发工具

实现本协议不强制使用微软开发工具,可使用第三方编译器 / 运行库。

 

 
 
 
 
 
 
  1.  
  2.  
  3.  
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
 
 
 
 

[MS-RDPEWA] 远程桌面协议:WebAuthn 虚拟通道协议

版本:v20260330 | 发布日期:2026年3月30日
版权所有 © 2026 Microsoft Corporation

开放规范文档的知识产权声明

  • 技术文档:Microsoft 发布协议、文件格式、数据可移植性、计算机语言和标准支持的开放规范文档("本文档")。此外,概述文档涵盖协议间的关系和交互。
  • 版权:本文档受 Microsoft 版权保护。无论承载本文档的 Microsoft 网站使用条款中包含任何其他条款,您均可复制本文档以开发本文档所述技术的实现,并可在您的实现中分发其部分内容,或在文档中按需分发以正确记录实现。您也可以在实现中分发(无论是否修改)文档中包含的任何架构、IDL 或代码示例。此许可同样适用于开放规范文档中引用的任何文档。
  • 无商业机密:Microsoft 不对本文档主张任何商业机密权利。
  • 专利:Microsoft 拥有可能涵盖您实现开放规范文档中所述技术的专利。本声明或 Microsoft 交付本文档均不授予这些专利或任何其他 Microsoft 专利下的任何许可。但是,特定的开放规范文档可能受 Microsoft 开放规范承诺或 Microsoft 社区承诺的约束。如果您希望获得书面许可,或本文档所述技术不受开放规范承诺或社区承诺的约束(视情况而定),可通过联系 mailto:iplg@microsoft.com 获取专利许可。
  • 许可计划:要查看特定许可计划范围内的所有协议及相关专利,请访问专利地图。
  • 商标:本文档中包含的公司和产品名称可能受商标或类似知识产权的保护。本声明不授予这些权利下的任何许可。有关 Microsoft 商标列表,请访问 http://www.microsoft.com/trademarks
  • 虚构名称:本文档中描述的示例公司、组织、产品、域名、电子邮件地址、徽标、人物、地点和事件均为虚构。无意与任何真实公司、组织、产品、域名、电子邮件地址、徽标、人物、地点或事件产生关联,也不应做此类推断。
  • 权利保留:所有其他权利均予以保留,本声明不授予上述明确描述以外的任何权利,无论是暗示、禁止反言还是其他方式。
  • 工具:开放规范文档不要求使用 Microsoft 编程工具或编程环境来开发实现。如果您有权访问 Microsoft 编程工具和环境,您可以自由使用它们。某些开放规范文档旨在与公开可用的标准规范和网络编程技术结合使用,因此假定读者熟悉上述材料或可以立即获取。
  • 支持:如有问题或需要支持,请联系 mailto:dochelp@microsoft.com

修订摘要

表格
日期 修订历史 修订类别 备注
2022/9/3 1.0 新增 发布新文档。
2022/11/8 1.0 技术内容的含义、语言或格式无变更。
2024/4/23 2.0 重大 技术内容发生重大变更。
2026/3/30 3.0 重大 技术内容发生重大变更。

目录

  1. 简介
    • 1.1 术语表
    • 1.2 引用
      • 1.2.1 规范性引用
      • 1.2.2 信息性引用
    • 1.3 概述
    • 1.4 与其他协议的关系
    • 1.5 前提条件/先决条件
    • 1.6 适用性声明
    • 1.7 版本控制和能力协商
    • 1.8 供应商可扩展字段
    • 1.9 标准分配
  2. 消息
    • 2.1 传输
    • 2.2 消息语法
      • 2.2.1 WebAuthN_Channel 请求消息
        • 2.2.1.1 webAuthNPara 映射
        • 2.2.1.2 CTAPCBOR_CMD_MAKE_CREDENTIAL 请求
        • 2.2.1.3 CTAPCBOR_CMD_GET_ASSERTION 请求
      • 2.2.2 WebAuthN_Channel 响应消息
        • 2.2.2.1 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射
          • 2.2.2.1.1 CTAP MakeCredential 响应
          • 2.2.2.1.2 CTAP GetAssertion 响应
        • 2.2.2.2 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 响应映射
        • 2.2.2.3 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 响应映射
  3. 协议详情
    • 3.1 客户端和服务器详情
      • 3.1.1 抽象数据模型
      • 3.1.2 计时器
      • 3.1.3 初始化
      • 3.1.4 高层触发事件
      • 3.1.5 消息处理事件和排序规则
      • 3.1.6 计时器事件
      • 3.1.7 其他本地事件
  4. 协议示例
    • 4.1 CTAPCBOR_RPC_COMMAND_API_VERSION
    • 4.2 CTAPCBOR_RPC_COMMAND_IUVPAA
    • 4.3 CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP
    • 4.4 CTAPCBOR_RPC_COMMAND_WEB_AUTHN
      • 4.4.1 CTAPCBOR_CMD_MAKE_CREDENTIAL
      • 4.4.2 CTAPCBOR_CMD_GET_ASSERTION
    • 4.5 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS
    • 4.6 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST
  5. 安全性
    • 5.1 实现者的安全注意事项
    • 5.2 安全参数索引
  6. 附录 A:产品行为
  7. 变更跟踪
  8. 索引

1 简介

远程桌面协议(RDP):WebAuthn 虚拟通道协议为用户提供了一种通过 RDP 协议执行 WebAuthn 操作的方式。它使服务器能够向客户端发送 WebAuthn 请求,客户端随后可以使用该请求与认证器(平台认证器和跨平台认证器)进行通信,并返回响应。
本规范的 1.5、1.8、1.9、2 和 3 节为规范性内容。本规范中的所有其他章节和示例均为信息性内容。

1.1 术语表

本文档使用以下术语:
  • 全局唯一标识符(GUID):在 Microsoft 协议技术文档(TD)中与通用唯一标识符(UUID)互换使用的术语。互换使用这些术语并不暗示或要求使用特定的算法或机制来生成该值。具体而言,使用该术语并不暗示或要求必须使用 [RFC4122] 或 [C706] 中描述的算法来生成 GUID。另请参见通用唯一标识符(UUID)。
  • 远程桌面协议(RDP):一种多通道协议,允许用户连接到运行 Microsoft 终端服务(TS)的计算机。RDP 支持客户端和服务器设置的交换,还支持协商在连接期间使用的通用设置,以便在客户端和服务器之间交换和处理输入、图形及其他数据。
  • 传输控制协议(TCP):一种与互联网协议(IP)配合使用的协议,用于在互联网上以消息单元的形式在计算机之间发送数据。TCP 负责跟踪消息被分割成的各个数据单元(称为数据包),以实现通过互联网的高效路由。
  • MAY(可以)、SHOULD(应当)、MUST(必须)、SHOULD NOT(不应当)、MUST NOT(不得):这些术语(全部大写)的使用定义见 [RFC2119]。所有可选行为的声明均使用 MAY、SHOULD 或 SHOULD NOT。

1.2 引用

Microsoft 开放规范库中文档的链接指向所引用文档最新发布版本中的正确章节。但是,由于库中的各个文档并非同时更新,因此文档中的章节编号可能不匹配。您可以通过查看勘误表来确认正确的章节编号。

1.2.1 规范性引用

我们经常对规范性引用进行调查,以确保其持续可用性。如果您在查找规范性引用时遇到任何问题,请联系 mailto:dochelp@microsoft.com。我们将协助您查找相关信息。

1.2.2 信息性引用

1.3 概述

远程桌面协议:WebAuthn 虚拟通道为用户提供了一种通过 RDP 协议执行 WebAuthn 操作的方式。
有关 WebAuthn 的更多详细信息,请参见 [W3C-WebAuthPKC3] 和 [W3C-WebAuthPKC2]。
WebAuthn JavaScript API 由浏览器处理。浏览器继而调用 Windows 上系统提供的 API。然后系统建立一个到 RDP 客户端的虚拟通道,并将请求发送给它。在 RDP 客户端侧,请求被解码并通过客户端到认证器协议(CTAP)与可用的认证器进行通信来处理。有关 CTAP 协议的更多详细信息,请参见 [FIDO-CTAP]。

1.4 与其他协议的关系

本协议使用 [W3C-WebAuthPKC3]、[W3C-WebAuthPKC2] 和 [FIDO-CTAP] 协议。

1.5 前提条件/先决条件

远程桌面协议:WebAuthn 虚拟通道仅在动态虚拟通道传输完全建立后才能运行。
本协议是基于消息的。它假定数据包作为整体被保留,不允许分片。此外,它假定不会丢失数据包。

1.6 适用性声明

本协议设计为在客户端和服务器之间建立的远程桌面协议(RDP)虚拟通道的上下文中运行。

1.7 版本控制和能力协商

本协议支持版本控制和能力协商作为请求的一部分。支持本协议的客户端允许打开此虚拟通道,不支持本协议的客户端不允许打开此虚拟通道。

1.8 供应商可扩展字段

本协议还使用 Win32 错误代码。这些值取自 [MS-ERREF] 第 2.2 节规定的错误编号空间。供应商应当(SHOULD)重用这些值及其指示的含义。选择任何其他值都有未来发生冲突的风险。

1.9 标准分配

无。

2 消息

2.1 传输

本协议使用名为 WebAuthN_Channel 的通道。此通道必须(MUST)使用可靠协议(如 TCP)实现。写入此通道的消息被假定为完整的且按顺序到达。

2.2 消息语法

请求和响应使用简洁二进制对象表示(CBOR)格式编码。有关 CBOR 的更多详细信息,请参见 [IETF-8949]。使用 CBOR 编码是因为 CTAP 协议([FIDO-CTAP])使用它来访问安全密钥。因此,需要使用外部安全密钥的客户端需要使用 CBOR 编码。平台认证器提供自己的 API 来与其实现进行通信。总体而言,来自依赖方的 WebAuthn 请求连同有关操作的元数据一起在请求消息中编码。
本协议有两种消息:请求消息和响应消息。这两种消息根据其内容执行不同的操作。每条消息都是一个 CBOR 映射(有关映射的描述,请参见 [IETF-8949] 第 3.1 节"主要类型")。消息本身根据请求或响应的类型,将依次包含额外的映射。
接下来的两节描述请求和响应消息及其元素。

2.2.1 WebAuthN_Channel 请求消息

WebAuthN_Channel 请求消息是一个使用以下键和值的 CBOR 映射。
command(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示 RPC 命令类型。此字段必须(MUST)设置为以下值之一:
表格
含义
CTAPCBOR_RPC_COMMAND_WEB_AUTHN = 5 包含平台认证器和安全密钥的注册和断言请求。
CTAPCBOR_RPC_COMMAND_IUVPAA = 6 对应于 WebAuthn IsUserVerifyingPlatformAuthenticatorAvailable API。参见 [W3C-WebAuthPKC2] 第 5.1.7 节。
CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP = 7 取消当前的 WebAuthn 请求。
CTAPCBOR_RPC_COMMAND_API_VERSION = 8 获取平台认证器 API 版本。1 调用者可以使用版本号来识别操作系统上可用的功能,以便调用者决定是否可以满足请求。
CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS = 9 从平台获取依赖方的凭证元数据信息。2
CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST = 12 获取用户代理的认证器元数据信息。3
request(键类型:文本字符串(主要类型 3)):一个字节字符串(主要类型 2),包含有关请求的详细信息。内容因命令类型而异。
  • 对于 CTAPCBOR_RPC_COMMAND_API_VERSION、CTAPCBOR_RPC_COMMAND_IUVPAA、CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 和 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST,此字段不应当(SHOULD NOT)存在。
  • 对于 CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP,此字段必须(MUST)包含表示当前操作的 GUID。
  • 对于 CTAPCBOR_RPC_COMMAND_WEB_AUTHN,第一个字节必须(MUST)包含 WebAuthn 命令类型:
表格
含义
CTAPCBOR_CMD_MAKE_CREDENTIAL = 0x01 此命令用于为依赖方的账户创建新凭证(注册阶段)。每个账户执行一次。
CTAPCBOR_CMD_GET_ASSERTION = 0x02 用于使用注册阶段先前创建的密钥对用户进行身份验证并签署客户端数据。这也称为认证阶段。该命令在注册阶段后多次执行。
第二个及后续字节必须(MUST)包含与上表中 WebAuthn 命令类型对应的 CBOR 映射。参见第 2.2.1.2 节和第 2.2.1.3 节。
flags(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),包含有关请求的详细信息。该值是以下值的异或(XOR):
表格
含义
CTAPCLT_U2F_FLAG = 0x00020000 设置后表示请求和响应将使用 U2F。提供者应使用 U2F 设备接口而非 CTAP 接口。
CTAPCLT_DUAL_FLAG = 0x00040000 设置后表示先尝试 CTAP 消息和协议。如果 CTAP 失败,则使用 U2F 消息。
CTAPCLT_CLIENT_PIN_REQUIRED_FLAG = 0x00100000 设置后强制在 CTAPCBOR_CMD_MAKE_CREDENTIAL 中使用客户端 PIN。
CTAPCLT_SELECT_CREDENTIAL_ALLOW_UV_FLAG = 0x00008000 在登录获取断言时设置,允许用户验证(UV)获取断言以选择凭证。
CTAPCLT_UV_REQUIRED_FLAG = 0x00400000 设置后要求用户验证。
CTAPCLT_UV_PREFERRED_FLAG = 0x00800000 设置后表示优先用户验证。
CTAPCLT_UV_NOT_REQUIRED_FLAG = 0x01000000 表示不需要用户验证。
CTAPCLT_HMAC_SECRET_EXTENSION_FLAG = 0x04000000 设置后为 CTAPCBOR_CMD_MAKE_CREDENTIAL 请求启用 hmac-secret 扩展。
CTAPCLT_FORCE_U2F_V2_FLAG = 0x08000000 设置后强制使用 U2F 版本 2 接口。
rpId(键类型:文本字符串(主要类型 3)):文本字符串(主要类型 3),表示通过 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 命令请求凭证元数据的依赖方 ID。
authenticatorInfoLogoRequestType(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),表示请求的认证器徽标类型。
表格
含义
WEBAUTHN_AUTHENTICATOR_LOGO_REQUEST_TYPE_NONE = 0 不请求徽标。
WEBAUTHN_AUTHENTICATOR_LOGO_REQUEST_TYPE_LIGHT = 1 请求浅色主题徽标。
WEBAUTHN_AUTHENTICATOR_LOGO_REQUEST_TYPE_DARK = 2 请求深色主题徽标。
WEBAUTHN_AUTHENTICATOR_LOGO_REQUEST_TYPE_ALL = 3 请求所有主题徽标。
hmacSecretSaltValues(键类型:文本字符串(主要类型 3)):一个字节字符串(主要类型 2),包含 hmac-secret 扩展盐值。
thirdPartyPayment(键类型:文本字符串(主要类型 3)):布尔值(主要类型 7),设置后表示凭证适用于第三方支付。
clientDataJSON(键类型:文本字符串(主要类型 3)):一个字节字符串(主要类型 2),包含由用户代理计算的客户端数据 JSON。
remoteWebAuthn(键类型:文本字符串(主要类型 3)):布尔值(主要类型 7),设置后表示请求为远程 WebAuthn。
filterHybridTransport(键类型:文本字符串(主要类型 3)):布尔值(主要类型 7),设置后表示要过滤掉混合传输。
timeout(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),表示操作的超时时间(以毫秒为单位)。
transactionid(键类型:文本字符串(主要类型 3)):字节数组(主要类型 2);作为事务标识符的 GUID。
webAuthNPara(键类型:文本字符串(主要类型 3)):一个 CBOR 映射(主要类型 5),提供认证参数。有关映射的详细信息,请参见第 2.2.1.1 节。

2.2.1.1 webAuthNPara 映射

webAuthNPara 用于 WebAuthN_Channel 请求消息中,指定用于认证的参数。它具有以下键和值:
wnd(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),是调用者的窗口句柄。
attachment(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示适用于此操作的认证器。
表格
含义
WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY = 0 使用任何能满足请求条件的认证器。
WEBAUTHN_AUTHENTICATOR_ATTACHMENT_PLATFORM = 1 使用平台认证器来满足请求条件。4
WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM = 2 使用跨平台漫游认证器(如安全密钥或手机)来满足请求条件。
requireResident(键类型:文本字符串(主要类型 3)):true 或 false CBOR 简单值(参见 [IETF-8949] 第 3.3 节),指示是否需要驻留凭证密钥。
preferResident(键类型:文本字符串(主要类型 3)):true 或 false CBOR 简单值(参见 [IETF-8949] 第 3.3 节),指示是否优先驻留凭证密钥。
userVerification(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),表示验证要求。此字段必须(MUST)设置为以下值之一:
表格
含义
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY = 0 不需要用户验证,任何设置对依赖方均可接受。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED = 1 依赖方要求用户验证。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED = 2 依赖方优先用户验证。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED = 3 依赖方不鼓励用户验证。
attestationPreference(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示首选的认证方法。此字段必须(MUST)设置为以下值之一:
表格
含义
WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_ANY = 0 使用任何认证传递偏好。
WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_NONE = 1 对认证传递方法无偏好。
WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT = 2 优先间接认证传递。
WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT = 3 优先直接认证传递。
enterpriseAttestation(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示要使用的企业认证。此字段必须(MUST)设置为以下值之一:
表格
含义
WEBAUTHN_ENTERPRISE_ATTESTATION_NONE = 0 依赖方未请求企业认证。
WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED = 1 依赖方请求企业认证,如果认证器已配置此依赖方,则可以提供。
WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED = 2 依赖方请求企业认证,如果平台(操作系统/浏览器)已配置此依赖方,则可以允许此类认证。
cancellationId(键类型:文本字符串(主要类型 3)):字节数组(主要类型 2);作为取消标识符的 GUID。
credLargeBlobOperation(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示依赖方要执行的大型 Blob 操作类型。此字段必须(MUST)设置为以下值之一:
表格
含义
0 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE(无操作)
1 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET(获取)
2 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET(设置)
3 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE(删除)
credLargeBlob(键类型:文本字符串(主要类型 3)):字节字符串。主要类型 2。表示大型 Blob。
largeBlobSupport(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),指示依赖方请求的 largeBlob 支持类型。此字段必须(MUST)设置为以下值之一:
表格
含义
0 WEBAUTHN_LARGE_BLOB_SUPPORT_NONE(无)
1 WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED(必需)
2 WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED(优先)
transportHint(键类型:文本字符串(主要类型 3)):文本字符串(主要类型 3),指示依赖方希望系统使用的传输方式。此字段必须(MUST)设置为 [W3C-WebAuthPKC3] 第 5.8.8 节中规定的以下值之一。

2.2.1.2 CTAPCBOR_CMD_MAKE_CREDENTIAL 请求

这是用于 CTAPCBOR_CMD_MAKE_CREDENTIAL 命令的 WebAuthN_Channel 请求(第 2.2.1 节)中使用的 CBOR 映射。该映射包含 [FIDO-CTAP] 第 5.1 节中定义的请求所需的详细信息。
该映射最多有七个字段,由数字键指示。几乎所有字段本身都是 CBOR 映射。某些字段是可选的。
表格
字段
1 客户端数据哈希。
2 依赖方信息。
3 用户账户信息。
4 算法偏好。
5 排除列表(可选)。
6 扩展(可选)。
7 选项(可选)。
以下是示例请求的文本表示:
文本
编辑
 
 
 
{
  1: h'19EEDF1F51A140B34B316293B10C2BC0E6C53860771BB1DDA4A82E5DE94A4E7C',
  2: { id: "ctap.dev", name: "WebAuthn Test Server" },
  3: { id: h'6D696B65406578616D706C652E636F6D', name: "mike@example.com", displayName: "Mike Marlowe" },
  4: [ { alg: -7, type: "public-key" }, { alg: -257, type: "public-key" } ],
  5: [ { id: h'1CA0E7AAAB613DA3FAC3C76366A6046E', type: "public-key", transports: 1 },
       { id: h'2180DA5815A4443A91050803E93EF39A', type: "public-key", transports: 1 } ],
  6: { credBlob: h'31323132', largeBlob: { support: "preferred" }, credProtect: 2, largeBlobKey: true, minPinLength: true },
  7: { rk: true }
}
详细信息请参见 [FIDO-CTAP] 第 5.1 节。

2.2.1.3 CTAPCBOR_CMD_GET_ASSERTION 请求

这是用于 CTAPCBOR_CMD_GET_ASSERTION 命令的 WebAuthN_Channel 请求(第 2.2.1 节)中使用的 CBOR 映射。该映射包含 [FIDO-CTAP] 第 5.2 节中定义的请求所需的详细信息。
该映射最多有五个字段,由数字键指示。几乎所有字段本身都是 CBOR 映射。某些字段是可选的。
表格
字段
1 依赖方标识符。
2 客户端数据哈希。
3 凭证包含列表(可选)。
4 扩展(可选)。
5 排除列表(可选)。
以下是示例请求的文本表示:
文本
编辑
 
 
 
{
  1: "ctap.dev",
  2: h'6F43BB640674BE2C2CC33AD6F0F08E450DC035F2113D1FB38A6985E32D3CB14F',
  3: [ { id: h'1C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4', type: "public-key" },
       { id: h'BC365B699040F8B4819833CF2F0FB4733BD424A3B043913C8CF5527799F4373A', type: "public-key" } ],
  4: { credBlob: true },
  5: { up: true }
}
详细信息请参见 [FIDO-CTAP] 第 5.2 节。

2.2.2 WebAuthN_Channel 响应消息

WebAuthN_Channel 响应消息是一个 32 位值,后跟根据 RPC 命令包含数据的字节:
hresult(无符号整数):RPC 命令的 32 位 HRESULT。参见 [MS-ERREF] 第 2.1 节。
response(字节字符串):根据 RPC 命令而定的可变长度字节字符串。以下是给定 RPC 命令的响应形式:
表格
RPC 命令 响应类型
CTAPCBOR_RPC_COMMAND_WEB_AUTHN = 5 CBOR 映射(主要类型 5)。参见第 2.2.2.1 节。
CTAPCBOR_RPC_COMMAND_IUVPAA = 6 小端格式的 4 字节布尔值。1 为 true,0 为 false。
CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP = 7 无额外字节。
CTAPCBOR_RPC_COMMAND_API_VERSION = 8 小端格式的 4 字节无符号整数,给出 API 版本。
CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS = 9 包含凭证元数据信息的 CBOR 数组。
CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST = 12 包含认证器元数据信息的 CBOR 数组。

2.2.2.1 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射

WebAuthN_Channel 响应消息是一个使用以下键和值的 CBOR 映射。
deviceInfo(键类型:文本字符串(主要类型 3)):一个 CBOR 映射(主要类型 5),包含有关设备的信息。该映射使用以下键和值:
  • maxMsgSize(键类型:文本字符串(主要类型 3)):一个无符号 32 位整数(主要类型 0),提供认证器可以处理的最大消息大小。
  • maxSerializedLargeBlobArray(键类型:文本字符串(主要类型 3)):一个无符号 32 位整数(主要类型 0),提供认证器可以处理的最大序列化大型 Blob 大小。
  • providerType(键类型:文本字符串(主要类型 3)):表示提供者类型的文本字符串(主要类型 3)。仅用于信息目的。以下值之一:
表格
含义
CTAPHID_PROVIDER_TYPE = L"Hid" HID 提供者。
CTAPNFC_PROVIDER_TYPE = L"Nfc" NFC 提供者。
CTAPBLE_PROVIDER_TYPE = L"Ble" BLE 提供者。
WEBAUTHN_PLATFORM_PROVIDER_TYPE = L"Platform" 平台提供者。
  • providerName(键类型:文本字符串(主要类型 3)):表示提供者名称的文本字符串(主要类型 3)。仅用于信息目的。
  • devicePath(键类型:文本字符串(主要类型 3)):提供认证器路径的文本字符串(主要类型 3)。
  • Manufacturer(键类型:文本字符串(主要类型 3)):表示认证器制造商的文本字符串(主要类型 3)。
  • Product(键类型:文本字符串(主要类型 3)):表示认证器产品名称的文本字符串(主要类型 3)。
  • aaGuid(键类型:文本字符串(主要类型 3)):一个 16 字节的字节字符串(主要类型 2),包含认证器的认证器认证 GUID(AAGUID)。
  • residentKey(键类型:文本字符串(主要类型 3)):true 或 false CBOR 简单值,指示是否创建了驻留凭证。
  • uvStatus(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),给出操作的验证状态。此字段必须(MUST)设置为以下值之一:
表格
含义
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY = 0 使用任何验证要求。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED = 1 需要验证。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED = 2 优先验证。
WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED = 3 不鼓励验证。
  • uvRetries(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),表示认证器可用的验证重试次数。
  • credWithHmacSecretArray(键类型:文本字符串(主要类型 3)):一个字节字符串(主要类型 2),包含 hmacSecret 扩展响应值。
  • thirdPartyPayment(键类型:文本字符串(主要类型 3)):布尔值(主要类型 7),表示创建的凭证是否适用于第三方支付。
  • transports(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),表示凭证支持的传输方式。
Status(键类型:文本字符串(主要类型 3)):一个无符号整数(主要类型 0),给出整体操作的状态。
Response(键类型:文本字符串(主要类型 3)):包含与单个 WebAuthn 命令对应的单个操作的响应。响应由一个指示成功或失败的单字节组成。值 0x00 表示成功。任何其他值都是错误。有关值和含义,请参见 [FIDO-CTAP] 第 6.3 节。单字节代码后跟一个包含响应详细信息的 CBOR 映射。有关响应映射,请参见第 2.2.2.1.1 节和第 2.2.2.1.2 节。

2.2.2.1.1 CTAP MakeCredential 响应

这是 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射中用于创建凭证请求的响应的 CBOR 映射(参见第 2.2.2.1 节)。
有关映射键、值和数据类型的详细信息,请参见 [FIDO-CTAP] 第 6.2 节。
以下是示例响应的文本表示:
文本
编辑
 
 
 
{
  1: "packed",
  2: h'3D3CA4E1D7E11F604B32D0EFE18B449B057CC736ECE0BF820A42555426DB8834C500000003D8522D9F575B486688A9BA99FA02F35B00301C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4A50102032620012158201C1AEF38C820EE448C7BF0EE85912D0C4650F2A7B830431CBC13F49714D11FBA2258206A06795A704BD761068E13875D928FCDCC6C4E7F2AF4BCEC849098BCCF84F72DA36863726564426C6F62F56B6372656450726F74656374036B686D61632D736563726574F5',
  3: { alg: -7, sig: h'3045022100D8233DF9A938527864729037AD07DF2294F7CE764C886EF1EDC2F3AB1BD9CF6802201282A88B41A53FB2B338CBFC4FFF713A0DAA097BA359E1E72B60D93983716E8F', x5c: [ h'308202D8...' ] },
  5: h'523FC0E9385A21D9A9A427B494014DDF3F9934838C05CD4C97BDF564FC3C8AC8'
}

2.2.2.1.2 CTAP GetAssertion 响应

这是 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射中用于获取断言请求的响应的 CBOR 映射(参见第 2.2.2.1 节)。
有关映射键、值和数据类型的详细信息,请参见 [FIDO-CTAP] 第 6.2 节。
以下是示例响应的文本表示:
文本
编辑
 
 
 
{
  1: { id: h'1C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4', type: "public-key" },
  2: h'3D3CA4E1D7E11F604B32D0EFE18B449B057CC736ECE0BF820A42555426DB88348500000006A26863726564426C6F6244313231326B686D61632D736563726574585051144A81FFFCED51BB81932851ABB84D17325C764C95C5016B5ED0F80FA763728F7D410B39103FC502E115D7DAA326D6D0FA59A06BB20DFB4DA9AE31F1E3840D520FF29A01CD4B98D7B555730C289673',
  3: h'3045022033626FC0675341C2EBC5D5A049D739F517110F749685E12C3DABCBD2EB129E03022100D3CE29E77F8EBB3A0B63D858E56ACE6B3A8702BF5113BBE7A081D352F844914F',
  4: { id: h'6D696B65406578616D706C652E636F6D' }
}

2.2.2.2 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 响应映射

这是一个 CBOR 数组,包含平台为请求的依赖方所知的凭证的元数据。
单个凭证元数据信息在具有以下字段的 CBOR 映射中表示:
表格
键(无符号整数 – CBOR 主要类型 0)
0 版本信息(无符号整数。CBOR 主要类型 0)。
1 凭证 ID(字节字符串。主要类型 2)。
2 依赖方实体信息。
3 用户实体信息。
4 是否可从认证器中移除。
5 是否为已备份的凭证(布尔值。CBOR 主要类型 7)。
6 认证器名称(字符串。主要类型 3)。
7 认证器徽标。
8 第三方支付(布尔值。CBOR 主要类型 7)。
9 支持的传输方式(无符号整数。CBOR 主要类型 0)。
以下是示例响应的文本表示:
文本
编辑
 
 
 
[
  {
    0: 4,
    1: h'1C337E7A9F27200C98BE1E0337A501C02CBFA7215A85EA8CD9E187A1E97EFDDD',
    2: { id: "ctap.dev", name: "WebAuthn Test Server" },
    3: { id: h'626F62406578616D706C652E636F6D', name: "bob@example.com", displayName: "Bob Smith" },
    4: true,
    5: false,
    6: "Windows Hello",
    7: h'3C7376672076696577426F783D2230203020333920333922...',
    8: false,
    9: 16
  }
]

2.2.2.3 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 响应映射

这是一个 CBOR 数组,包含平台为用户代理所知的认证器的元数据。
单个认证器元数据信息在具有以下字段的 CBOR 映射中表示:
表格
键(无符号整数 – CBOR 主要类型 0)
1 版本信息(无符号整数。CBOR 主要类型 0)。
2 认证器 ID(字节字符串。主要类型 2)。
3 认证器名称(字符串。主要类型 3)。
4 认证器徽标(字节字符串。主要类型 2)。
5 是否已锁定(布尔值。CBOR 主要类型 7)。
以下是示例响应的文本表示:
文本
编辑
 
 
 
[
  {
    1: 1,
    2: h'08987058CADC4B81B6E130DE50DCBE96',
    3: "Windows Hello",
    4: h'3C7376672069643D224C617965725F3122...',
    5: false
  }
]

3 协议详情

3.1 客户端和服务器详情

本协议有两个主要操作:MakeCredential(第 2.2.1.2 节)和 GetAssertion(第 2.2.1.3 节)。MakeCredential 操作在认证器上为依赖方注册凭证。GetAssertion 操作使用认证器向依赖方验证用户身份。
本协议设计为更接近 WebAuthn 层而非 CTAP 层。请求映射中的各个字段映射到 WebAuthn 层定义的 WebAuthn 选项。
客户端收到请求后,客户端确定哪个认证器可以满足请求。确定哪个认证器支持特定能力以及是否能够满足请求的过程在 CTAP 规范中定义。参见 [FIDO-CTAP] 第 4 节和第 5.4 节。
  • 3.1.1 抽象数据模型:无。
  • 3.1.2 计时器:无。
  • 3.1.3 初始化:无。
  • 3.1.4 高层触发事件:无。
  • 3.1.5 消息处理事件和排序规则:无。
  • 3.1.6 计时器事件:无。
  • 3.1.7 其他本地事件:无。

4 协议示例

以下各节提供不同命令的请求和响应示例。

4.1 CTAPCBOR_RPC_COMMAND_API_VERSION

4.1.1 请求

完整请求(CBOR 映射):
文本
编辑
 
 
 
A467636F6D6D616E640565666C616773006774696D656F7574006D7472616E73616374696F6E49645000000000000000000000000000000000
CBOR 编码的文本表示:
json
编辑
 
 
 
{"command": 5, "flags": 0, "timeout": 0, "transactionId": h'00000000000000000000000000000000'}

4.1.2 响应

包含 HRESULT 和 API 版本的完整响应:
文本
编辑
 
 
 
0x00000004
上述响应表示调用成功(前 32 位为 0x00000000),API 版本为 4。

4.2 CTAPCBOR_RPC_COMMAND_IUVPAA

4.2.1 请求

完整请求(CBOR 映射):
文本
编辑
 
 
 
0xA467636F6D6D616E640665666C616773006774696D656F7574006D7472616E73616374696F6E49645000000000000000000000000000000000
CBOR 编码的文本表示:
json
编辑
 
 
 
{"command": 6, "flags": 0, "timeout": 0, "transactionId": h'00000000000000000000000000000000'}

4.2.2 响应

包含 HRESULT 和 IUVPAA 的完整响应:
文本
编辑
 
 
 
0x00000001

4.3 CTAPCBOR_RPC_COMMAND_CANCEL_CUR_OP

4.3.1 请求

完整请求(CBOR 映射):
文本
编辑
 
 
 
A567636F6D6D616E640765666C616773006774696D656F7574006772657175657374507FDFBDDF0000000000000000000000006D7472616E73616374696F6E49645000000000000000000000000000000000
CBOR 映射的文本表示:
json
编辑
 
 
 
{"command": 7, "flags": 0, "timeout": 0, "request": h'7FDFBDDF000000000000000000000000', "transactionId": h'00000000000000000000000000000000'}

4.3.2 响应

完整 RPC 响应仅包含 HRESULT:

4.4 CTAPCBOR_RPC_COMMAND_WEB_AUTHN

4.4.1 CTAPCBOR_CMD_MAKE_CREDENTIAL

4.4.1.1 请求
完整请求(CBOR 映射):
文本
编辑
 
 
 
A967636F6D6D616E640565666C6167731A144000006774696D656F75741A000493E06D7472616E73616374696F6E49645026C98F33FCD61D4DBA5B27570F8293DF...
请求的文本表示:
文本
编辑
 
 
 
{
  command: 5,
  flags: 339738624,
  timeout: 300000,
  transactionId: h'26C98F33FCD61D4DBA5B27570F8293DF',
  request: h'01A701582019EEDF1F51A140B34B316293B10C2BC0E6C53860771BB1DDA4A82E5DE94A4E7C...',
  webAuthNPara: {
    wnd: 197430,
    attachment: 2,
    requireResident: true,
    preferResident: false,
    userVerification: 1,
    attestationPreference: 3,
    enterpriseAttestation: 0,
    cancellationId: h'DAED4B74000000000000000000000000',
    largeBlobSupport: 2
  },
  filterHybridTransport: false,
  thirdPartyPayment: false,
  clientDataJSON: h'7B2274797065223A22776562617574686E2E637265617465222C...'
}
命令类型(0x01)之后的内部 MakeCredential 请求详情:
内部映射的文本表示:
文本
编辑
 
 
 
{
  1: h'19EEDF1F51A140B34B316293B10C2BC0E6C53860771BB1DDA4A82E5DE94A4E7C',
  2: { id: "ctap.dev", name: "WebAuthn Test Server" },
  3: { id: h'6D696B65406578616D706C652E636F6D', name: "mike@example.com", displayName: "Mike Marlowe" },
  4: [ { alg: -7, type: "public-key" }, { alg: -257, type: "public-key" } ],
  5: [ { id: h'1CA0E7AAAB613DA3FAC3C76366A6046E', type: "public-key", transports: 1 },
       { id: h'2180DA5815A4443A91050803E93EF39A', type: "public-key", transports: 1 } ],
  6: { credBlob: h'31323132', largeBlob: { support: "preferred" }, credProtect: 2, largeBlobKey: true, minPinLength: true },
  7: { rk: true }
}
4.4.1.2 响应
包含 HRESULT 和 CBOR 映射的完整 RPC 响应:
文本
编辑
 
 
 
0x0000A36A646576696365496E666F...
HRESULT 之后响应的文本表示:
文本
编辑
 
 
 
{
  deviceInfo: {
    maxMsgSize: 1200,
    maxSerializedLargeBlobArray: 1024,
    providerType: "Hid",
    providerName: "MicrosoftCtapHidProvider",
    devicePath: "\\\\?\\hid#vid_1050&pid_0402#8&93c42f&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}",
    manufacturer: "Yubico",
    product: "YubiKey FIDO",
    aaGuid: h'9F2D52D85B57664888A9BA99FA02F35B',
    residentKey: true,
    credentialListIndexPlusOne: -1,
    uvStatus: 1,
    uvRetries: 3,
    thirdPartyPayment: false,
    transports: 1
  },
  status: 0,
  response: h'00A401667061636B6564...'
}
指示成功(0x00)的第一个字节之后的内部认证器响应详情:
内部认证器响应的文本表示:
文本
编辑
 
 
 
{
  1: "packed",
  2: h'3D3CA4E1D7E11F604B32D0EFE18B449B...',
  3: { alg: -7, sig: h'3045022100D8233DF9A938527864729037AD07DF22...', x5c: [ h'308202D8...' ] },
  5: h'523FC0E9385A21D9A9A427B494014DDF3F9934838C05CD4C97BDF564FC3C8AC8'
}

4.4.2 CTAPCBOR_CMD_GET_ASSERTION

4.4.2.1 请求
完整请求(CBOR 映射):
文本
编辑
 
 
 
A967636F6D6D616E640565666C6167731A004000006774696D656F75741A000493E06D7472616E73616374696F6E4964509C6904B32DBF974E96254E9B65D0AF8E...
请求的文本表示:
文本
编辑
 
 
 
{
  command: 5,
  flags: 4194304,
  timeout: 300000,
  transactionId: h'9C6904B32DBF974E96254E9B65D0AF8E',
  request: h'02A50168637461702E646576...',
  webAuthNPara: {
    wnd: 197430,
    attachment: 0,
    requireResident: false,
    preferResident: false,
    userVerification: 1,
    attestationPreference: 0,
    enterpriseAttestation: 0,
    cancellationId: h'1D33C40F000000000000000000000000'
  },
  hmacSecretSaltValues: h'A10282A20158301C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4...',
  filterHybridTransport: true,
  clientDataJSON: h'7B2274797065223A22776562617574686E2E676574222C...'
}
命令类型(0x02)之后的内部 GetAssertion 请求详情:
上述 GetAssertion 请求的文本表示:
文本
编辑
 
 
 
{
  1: "ctap.dev",
  2: h'6F43BB640674BE2C2CC33AD6F0F08E450DC035F2113D1FB38A6985E32D3CB14F',
  3: [
    { id: h'1C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4', type: "public-key" },
    { id: h'BC365B699040F8B4819833CF2F0FB4733BD424A3B043913C8CF5527799F4373A', type: "public-key" }
  ],
  4: { credBlob: true },
  5: { up: true }
}
4.4.2.2 响应
包含 HRESULT 和 CBOR 映射的完整响应:
文本
编辑
 
 
 
0x0000A36A646576696365496E666FAB...
HRESULT 之后 CBOR 映射的文本表示:
文本
编辑
 
 
 
{
  deviceInfo: {
    maxMsgSize: 1200,
    maxSerializedLargeBlobArray: 1024,
    providerType: "Hid",
    providerName: "MicrosoftCtapHidProvider",
    devicePath: "\\\\?\\hid#vid_1050&pid_0402#8&93c42f&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}",
    manufacturer: "Yubico",
    product: "YubiKey FIDO",
    aaGuid: h'9F2D52D85B57664888A9BA99FA02F35B',
    credentialListIndexPlusOne: 1,
    credWithHmacSecretArray: h'81A20158301C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4...',
    uvStatus: 1,
    uvRetries: 2,
    thirdPartyPayment: false,
    transports: 0
  },
  status: 0,
  response: h'00A401A262696458301C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4...'
}
指示成功(0x00)的第一个字节之后的内部认证器响应详情:
上述映射的文本表示:
文本
编辑
 
 
 
{
  1: { id: h'1C1AEF38C820EE448C7BF0EE8512BF9A813A96B73019E028E14270EB5AD74D2383EE72AC40DDABF53D3222CEBEA861D4', type: "public-key" },
  2: h'3D3CA4E1D7E11F604B32D0EFE18B449B...',
  3: h'3045022033626FC0675341C2EBC5D5A049D739F517110F749685E12C3DABCBD2EB129E03022100D3CE29E77F8EBB3A0B63D858E56ACE6B3A8702BF5113BBE7A081D352F844914F',
  4: { id: h'6D696B65406578616D706C652E636F6D' }
}

4.5 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS

4.5.1 请求

完整请求(CBOR 映射):
文本
编辑
 
 
 
0xAA67636F6D6D616E640965666C616773006774696D656F7574006D7472616E73616374696F6E496450D68633AC1123364E9709E201FD05693C...
CBOR 编码的文本表示:
文本
编辑
 
 
 
{
  command: 9,
  flags: 0,
  timeout: 0,
  transactionId: h'D68633AC1123364E9709E201FD05693C',
  filterHybridTransport: false,
  rpId: "ctap.dev",
  authenticatorInfoLogoRequestType: 0,
  pluginAutofillScenarioSupported: false,
  uvTransactionId: h'00000000000000000000000000000000',
  thirdPartyPayment: false
}

4.5.2 响应

完整响应(CBOR 映射):
文本
编辑
 
 
 
0x000081AA00040158201C337E7A9F27200C98BE1E0337A501C02CBFA7215A85EA8CD9E187A1E97EFDDD...
HRESULT 之后 CBOR 编码的文本表示:
文本
编辑
 
 
 
[
  {
    0: 4,
    1: h'1C337E7A9F27200C98BE1E0337A501C02CBFA7215A85EA8CD9E187A1E97EFDDD',
    2: { id: "ctap.dev", name: "WebAuthn Test Server" },
    3: { id: h'626F62406578616D706C652E636F6D', name: "bob@example.com", displayName: "Bob Smith" },
    4: true,
    5: false,
    6: "Windows Hello",
    7: h'3C7376672076696577426F783D2230203020333920333922...',
    8: false,
    9: 16
  }
]

4.6 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST

4.6.1 请求

完整请求(CBOR 映射):
文本
编辑
 
 
 
A667636F6D6D616E640C65666C616773006774696D656F7574006D7472616E73616374696F6E49645000000000000000000000000000000000782061757468656E74696361746F72496E666F4C6F676F52657175657374547970650171746869726450617274795061796D656E74F4
CBOR 编码的文本表示:
文本
编辑
 
 
 
{
  command: 12,
  flags: 0,
  timeout: 0,
  transactionId: h'00000000000000000000000000000000',
  authenticatorInfoLogoRequestType: 1,
  thirdPartyPayment: false
}

4.6.2 响应

完整响应(CBOR 映射):
文本
编辑
 
 
 
0x000081A50101025008987058CADC4B81B6E130DE50DCBE96036D57696E646F77732048656C6C6F...
HRESULT 之后 CBOR 编码的文本表示:
文本
编辑
 
 
 
[
  {
    1: 1,
    2: h'08987058CADC4B81B6E130DE50DCBE96',
    3: "Windows Hello",
    4: h'3C7376672069643D224C617965725F3122...',
    5: false
  }
]

5 安全性

5.1 实现者的安全注意事项

有关信息,请参见 [W3C-WebAuthPKC3] 第 13 节。

5.2 安全参数索引

无。

6 附录 A:产品行为

本规范中的信息适用于以下 Microsoft 产品或补充软件。对产品版本的引用包括这些产品的更新。
术语"较早"和"较晚"与产品版本一起使用时,分别指所有先前版本或所有后续版本。术语"直到"指版本的包含范围。适用的 Microsoft 产品按时间顺序列在本节中。
Windows 客户端
  • Windows 10 v1809 操作系统
  • Windows 11 操作系统
Windows 服务器
  • Windows Server v1809 操作系统
  • Windows Server 2019 操作系统
  • Windows Server 2022 操作系统
  • Windows Server 2025 操作系统
如有例外,将在本节中注明。如果产品名称旁出现更新版本、服务包或知识库(KB)编号,则行为在该更新中已更改。除非另有说明,新行为也适用于后续更新。如果产品版本旁出现产品版本,则该产品版本中的行为不同。
除非另有说明,本规范中使用术语"SHOULD"(应当)或"SHOULD NOT"(不应当)规定的任何可选行为声明,意味着产品行为符合 SHOULD 或 SHOULD NOT 的规定。除非另有说明,术语"MAY"(可以)意味着产品不遵循该规定。
注释:
1 第 2.2.1 节:这是 Windows 系统上的 Microsoft Windows API 版本。参见 [MSFT-WebAuthnAPIS] 中的 WebAuthNGetApiVersionNumber。
2 第 2.2.1 节:Windows 11 版本 24H2 操作系统及更高版本以及安装了 [MSKB-5065789] 的 Windows Server 2025 及更高版本支持 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS。
3 第 2.2.1 节:Windows 11 版本 24H2 及更高版本以及安装了 [MSKB-5065789] 的 Windows Server 2025 及更高版本支持 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST。
4 第 2.2.1.1 节:例如,Windows 系统上的 Windows Hello。

7 变更跟踪

本节标识自上次发布以来对本文档所做的更改。更改分为重大、次要或无。
修订类别"重大"表示文档中的技术内容已被重大修订。重大更改影响协议互操作性或实现。重大更改的示例包括:
  • 纳入互操作性要求变更的文档修订。
  • 记录协议功能变更的文档修订。
修订类别"次要"表示技术内容的含义已被澄清。次要更改不影响协议互操作性或实现。次要更改的示例是在句子、段落或表格级别澄清歧义的更新。
修订类别"无"表示未引入新的技术更改。可能进行了小的编辑和格式更改,但相关技术内容与上次发布的版本相同。
对本文档所做的更改列在下表中。有关更多信息,请联系 mailto:dochelp@microsoft.com
表格
章节 描述 修订类别
2.2.1 WebAuthN_Channel 请求消息 添加了 CTAPCBOR_RPC_COMMAND_GET_CREDENTIAL 和 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST RPC 命令。 重大
2.2.1 WebAuthN_Channel 请求消息 向 WebAuthN_Channel 请求消息添加了新字段。 重大
2.2.1.1 webAuthNPara 映射 向 webAuthNPara 映射添加了新字段。 重大
2.2.1.2 CTAPCBOR_CMD_MAKE_CREDENTIAL 请求 更新了请求示例。 重大
2.2.1.3 CTAPCBOR_CMD_GET_ASSERTION 请求 更新了请求示例。 重大
2.2.2 WebAuthN_Channel 响应消息 添加了 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 和 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST RPC 命令。 重大
2.2.2.1 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射 向 CTAPCBOR_RPC_COMMAND_WEB_AUTHN 响应映射添加了新字段。 重大
2.2.2.1.1 CTAP MakeCredential 响应 更新了响应示例。 重大
2.2.2.1.2 CTAP GetAssertion 响应 更新了响应示例。 重大
2.2.2.2 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 响应映射 添加了描述、字段和示例响应。 重大
2.2.2.3 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 响应映射 添加了描述、字段和示例响应。 重大
4.4.1.1 请求 更新了请求示例。 重大
4.4.1.2 响应 更新了响应示例。 重大
4.4.2.1 请求 更新了请求示例。 重大
4.4.2.2 响应 更新了响应示例。 重大
4.5 CTAPCBOR_RPC_COMMAND_GET_CREDENTIALS 添加了新章节。 重大
4.5.1 请求 添加了请求示例。 重大
4.5.2 响应 添加了响应示例。 重大
4.6 CTAPCBOR_RPC_COMMAND_GET_AUTHENTICATOR_LIST 添加了新章节。 重大
4.6.1 请求 添加了请求示例。 重大
4.6.2 响应 添加了响应示例。 重大

8 索引

A
  • 抽象数据模型 - 服务器 23
  • 适用性 6
C
  • 能力协商 6
  • 变更跟踪 39
D
  • 数据模型 - 抽象 - 服务器 23
F
  • 字段 - 供应商可扩展 7
G
  • 术语表 5
H
  • 高层触发事件 - 服务器 23
I
  • 实现者 - 安全注意事项 37
  • 安全参数索引 37
  • 信息性引用 6
  • 初始化 - 服务器 23
  • 简介 5
M
  • 消息处理 - 服务器 23
  • 消息 - 传输 8
  • WebAuthN_Channel 请求消息 8
  • WebAuthN_Channel 响应消息 15
N
  • 规范性引用 5
O
  • 其他本地事件 - 服务器 23
  • 概述(概要)6
P
  • 参数 - 安全 - 索引 37
  • 前提条件 6
  • 先决条件 6
  • 产品行为 38
R
  • 引用 5
    • 信息性 6
    • 规范性 5
  • 与其他协议的关系 6
S
  • 安全 - 实现者注意事项 37
  • 安全 - 参数索引 37
  • 排序规则 - 服务器 23
  • 服务器 - 抽象数据模型 23
  • 服务器 - 高层触发事件 23
  • 服务器 - 初始化 23
  • 服务器 - 消息处理 23
  • 服务器 - 其他本地事件 23
  • 服务器 - 概述 23
  • 服务器 - 排序规则 23
  • 服务器 - 计时器事件 23
  • 服务器 - 计时器 23
  • 标准分配 7
T
  • 计时器事件 - 服务器 23
  • 计时器 - 服务器 23
  • 跟踪变更 39
  • 传输 8
  • 触发事件 - 高层 - 服务器 23
V
  • 供应商可扩展字段 7
  • 版本控制 6
W
  • WebAuthN_Channel 请求消息 - 消息 8
  • WebAuthN_Channel 响应消息 - 消息 15

说明:以上为文档 [MS-RDPEWA] v20260330 的完整中文翻译。示例部分中的十六进制数据为原始协议数据,保持原样未做翻译。

MS-RDPEWA 微软官方协议完整解析(区分概念 + 规范文档 + Web RDP 承载逻辑 + 合规落地)

[MS-RDPEWA] 全称 Remote Desktop Protocol: WebAuthn Virtual Channel Protocol是 RDP 内部用于透传 WebAuthn FIDO2 密钥认证的虚拟通道子协议,并非网传的「RDP over WebSocket 外层封装协议」;
 
HTML5 Web RDP 浏览器端把完整 RDP 流量封装为 WebSocket over HTTPS 的外层承载协议,微软无独立编号协议名,行业俗称RDP over WebSocket 承载层,二者是「外层隧道封装 + 内层 RDP 虚拟通道 WebAuthn 透传」的组合关系,共同构成现代化 HTML5 Web RDP 安全底座。

一、MS-RDPEWA 官方基础档案(微软开放规范文档)

1. 官方文档入口

  • 正式发布 V1.0:2022-11-08
  • 重大升级 V2.0:2024-04-23(扩展企业认证、U2F 兼容、会话隔离)PlayReady
  • 支持系统:Win10 1809+/Win11、Server 2019/2022/2025,适配 Azure AVD、本地 RDS HTML5 客户端Microsoft ...
  • 官方可下载交付物:PDF、DOCX 格式完整协议文档、版本差异对比文件

2. 协议核心定位

在标准 RDP 动态虚拟通道(DVC)之上,新建专属通道WebAuthN_Channel,实现:
 
远程 RDP 会话内的 WebAuthn/FIDO2 认证请求,转发到本地浏览器客户端的安全密钥(YubiKey、Windows Hello、Touch ID)完成签名认证,解决远程桌面无法调用本地硬件密钥做强身份认证的零信任痛点Microsoft ...。

3. 协议前置依赖条件

  1. 底层必须完成标准 RDP TCP 连接 + 动态虚拟通道(DVC)协商完成;
  2. 承载于可靠有序 TCP 链路(HTML5 场景下是 RD Gateway 解密后的 RDP 流量);
  3. 报文整体不可分片、不允许丢包重传,上层 WebSocket 隧道保障传输可靠性Microsoft ...。

二、MS-RDPEWA 报文结构(官方标准定义)

1. 基础编码规则

全部请求 / 响应报文采用 CBOR(RFC8949)二进制紧凑编码,对齐 FIDO CTAP 协议原生编码格式,减少传输体积、适配浏览器 WebSocket 传输Microsoft ...。

2. 请求消息结构(WebAuthN_Channel Request)

字段 类型 说明
Command Code(1 字节) 整型 核心指令码:
 
0x01=MakeCredential(凭证注册)
 
0x02=GetAssertion(认证签名,高频业务)
 
0x07=Cancel Operation(取消认证弹窗)
 
0x08= 查询 API 版本
Flags(4 字节) 位掩码 兼容 U2F/CTAP 切换、PIN 码校验标记
Payload CBOR Map WebAuthn 完整业务参数(挑战值、RP 域名、用户信息、认证器约束)

Microsoft ...

3. 响应消息结构(WebAuthN_Channel Response)

  1. 头部:32 位HRESULT状态码(Windows 标准错误码,0 = 成功)
  2. 后续载荷根据指令返回:
    • 认证成功:CBOR 格式签名凭证、认证器 AAGUID、设备厂商信息;
    • 异常:仅返回错误 HRESULT,无附加数据Microsoft ...。

4. 两大核心业务指令(官方定义)

  1. MakeCredential(凭证注册)
     
    远程站点发起 FIDO 密钥注册,请求下发至本地客户端,调用硬件密钥生成公私钥对,公钥回传远端服务器完成绑定。
  2. GetAssertion(身份断言)
     
    远程业务系统发起登录挑战,客户端使用本地密钥对挑战值签名,将签名结果回传远端完成无密码登录,是远程办公 MFA 核心链路Microsoft ...。

三、HTML5 Web RDP 整体链路:外层 WebSocket 隧道 + 内层 MS-RDPEWA 虚拟通道

完整数据流(外网→内网)

  1. 外层承载(RDP over WSS)
     
    浏览器发起wss://RDGW域名/RDWeb/webclient/connect,完整 RDP 二进制数据包分段封装为 WebSocket 帧,443 端口 TLS1.3 加密传输,RD Gateway 网关解密重组原始 RDP 流;
  2. RDP 基础握手
     
    网关转发标准 RDP 至会话主机,协商动态虚拟通道 DVC;
  3. MS-RDPEWA 通道激活
     
    会话主机创建WebAuthN_Channel虚拟通道,启用 MS-RDPEWA 协议;
  4. 认证透传闭环
     
    远程网页登录弹窗 → RDP 虚拟通道 MS-RDPEWA 报文 → 浏览器前端 JS → 调用本地 WebAuthn API(硬件密钥)→ 签名原路返回 → 远端业务完成认证。

架构价值对比老旧 rdpwsx 架构

  • 老旧 RDP 文件下发:仅支持账号密码、智能卡证书认证,无 FIDO2 硬件密钥能力;
  • 现代化 HTML5+MS-RDPEWA:原生支持无密码零信任登录,杜绝凭据爆破、哈希传递攻击(PtH)。

四、官方合规约束与部署规范(适配等保 2.0、网安法)

1. MS-RDPEWA 协议强制安全约束(协议规范硬性要求)

  1. 通道流量复用底层 RDP 加密(TLS1.2+/RC4 禁用),禁止明文传输认证挑战与签名数据;
  2. 认证会话绑定浏览器标签页生命周期,页面关闭直接销毁虚拟通道,凭据不留存;
  3. 支持认证操作弹窗强制用户交互,无法后台静默调用硬件密钥,防范恶意会话劫持。

2. HTML5 Web RDP 全链路合规配置(结合 MS-RDPEWA 能力)

(1)身份合规:基于 MS-RDPEWA 实现 FIDO2 MFA

  • 对接 Entra ID AD,远程桌面登录 + 业务系统登录双节点启用 FIDO 硬件密钥;
  • 替代短信 / 验证码 MFA,满足等保三级「多因素强身份认证」要求。

(2)传输合规

  • 外层 WebSocket 仅放行 443,内网 3389 端口完全隔离;
  • RD Gateway 开启连接日志,记录 MS-RDPEWA 认证事件、密钥调用行为,日志留存≥180 天。

(3)边界管控

RD Gateway CAP 连接策略:仅允许开启 FIDO 合规终端接入,未配置硬件密钥的客户端直接拦截会话建立。

五、配套官方接口(平台集成,AVD REST API)

  1. AVD 管理 REST API(OAuth2.0 鉴权)
     
    可通过接口配置会话主机「是否启用 MS-RDPEWA WebAuthn 通道」、远程重定向白名单,实现平台化零信任策略下发;
  2. HTML5 前端订阅接口
     
    /RDWeb/webclient/feeddiscovery:获取授权桌面,前置 Entra ID 鉴权,会话接入前完成身份校验;
  3. 禁止行为:直接篡改 WebSocket 载荷、二次封装 MS-RDPEWA 报文,破坏协议完整性导致合规失效。

六、行业合规适配落地场景

  1. 政企关键业务
     
    利用 MS-RDPEWA 实现政务内网远程桌面 FIDO 硬件密钥登录,符合《关键信息基础设施安全保护条例》强身份准入要求;
  2. 医疗 HIPAA
     
    远程诊疗系统远程会话使用 WebAuthn 认证,病历访问无静态密码泄露风险,满足医疗数据访问审计;
  3. 金融 PCI-DSS
     
    核心交易系统远程运维禁用账号密码,全程硬件密钥鉴权,禁止凭证落地。

七、总结

  1. 概念厘清
     
    MS-RDPEWARDP 虚拟通道层 WebAuthn 密钥透传标准协议,不是外层 WebSocket 隧道协议,二者组合构成微软现代化合规 Web RDP 的安全核心;
  2. 官方支撑
     
    拥有完整微软开放协议文档、长期版本迭代(V2.0 2024 更新)、全平台系统适配,属于官方主力维护安全特性;
  3. 合规核心价值
     
    补齐传统 RDP 无硬件密钥强认证短板,搭配 WebSocket 外层隧道收敛攻击面,是替代老旧 rdpwsx.dll RDP 文件门户的标准化合规技术底座,可直接用于等级保护测评、跨境业务 GDPR/HIPAA 合规验收。

MSTSC / RDP 协议 + .RDP 配置文件完整演进史

整体分为初创奠基期(RDP4~RDP5)、架构重构期(RDP6~RDP7)、网络与图形质变期(RDP8~RDP8.1)、高清现代化期(RDP10+)、安全加固现代化(Win10/11 后期)两大主线:
  1. 协议层:RDP 核心传输、图形渲染、通道、加密、网络适配迭代;
  2. 客户端 mstsc.exe:GUI 交互、命令行参数、会话能力迭代;
  3. .rdp配置文件:INI 键值扩容、安全签名、资源重定向配置、防钓鱼安全机制演进。

一、初代奠基:RDP 4.0(1996,Windows NT4.0 Terminal Server Edition)

协议底层

  • 基于 ITU-T T.120/T.128 应用共享协议,底层依赖 Citrix MultiWin 多会话授权技术,微软自研 RDP 封装;
  • 仅基础位图画面传输、键鼠指令、RC4 40bit 弱加密三档加密(Low/Medium/High);
  • 无音频、无本地磁盘 / 打印机映射,仅纯画面远程桌面;
  • 单会话独占端口 3389,仅 8/16 位低色深。

MSTSC 客户端

初代 mstsc 命令行雏形,仅支持mstsc 主机名直接连接;无图形配置面板,无保存配置文件能力。

.rdp 文件

无独立.rdp 格式,无配置导出能力,所有参数靠注册表硬配置。

核心短板

带宽占用极高、无外设重定向、加密薄弱、仅适合局域网终端机房。

二、成熟可用:RDP 5.x 系列(Windows 2000 → Windows Server 2003 / XP)

1. RDP 5.0(Win2000 Server,1998)

  • 新增本地打印机重定向、位图缓存(持久位图缓存,大幅降低重复画面带宽);
  • 带宽自适应压缩,低速网络可用;
  • 正式诞生.rdp纯文本 INI 配置文件,mstsc 支持「另存为」导出连接配置。

2. RDP 5.1(Windows XP,2001)

里程碑消费级版本:
  • 24bit 真彩色、音频重定向(远程声音本地播放)
  • 剪贴板双向复制粘贴、串口 / 并口设备映射;
  • MSTSC 图形界面成型:显示、本地资源、体验、高级四大标签页;
  • .rdp新增audio moderedirectclipboardredirectprintersdesktopwidth/desktopheight分辨率配置键。

3. RDP 5.2(Server 2003,2003)

安全与企业化升级:
  • 128 位 RC4 高强度加密、TLS1.0 握手加密、服务器证书校验;
  • /console控制台会话参数(mstsc /console直连 0 号物理控制台);
  • 桌面主题重定向、会话目录、多会话管理;
  • .rdp新增full address地址、authentication level基础认证、redirectcomports串口映射开关。

5.x 阶段整体特征

.rdp为纯明文 INI,所有配置明文存储,无签名;企业开始批量分发 RDP 配置文件运维服务器;依然是纯位图 GDI 渲染,高分辨率画面卡顿明显。

三、架构大改版:RDP 6.0 / 6.1(Vista / Server2008,2006–2008)

协议核心革新

  1. 多显示器完整支持(跨度大屏远程);
  2. 字体平滑 ClearType 远程渲染、WPF 矢量界面适配;
  3. RemoteApp 远程单应用发布(不再只能整桌面,单独启动一个程序窗口);
  4. NLA 网络级别认证(RDP6.1/Vista SP1):前置身份校验,未认证不建立 TCP 通道,抵御端口扫描暴力破解;
  5. 32 位真彩色、文件拖拽双向传输(基于磁盘重定向)。

MSTSC 变化

  • 界面重构,「显示」面板支持多显示器布局配置;
  • 命令行新增/admin替代老旧/console(Win2008 废弃 console 参数);
  • 支持保存凭据到 Windows 凭据管理器,.rdp不再明文保存密码。

.rdp 配置文件演进

  • 新增redirectclipboard:i:1redirectdrives:i:1驱动器映射开关、multimon:i:1多显示器开关、remoteapplicationmode:i:1远程 App 标记;
  • 支持凭据隔离,密码不再写入 rdp 明文,改用 CredMan 引用;
  • 新增rdpsign.exe工具,首次支持对.rdp文件进行代码签名,防止配置被篡改分发钓鱼连接。

四、图形与多媒体质变:RDP 7.0 / 7.1(Win7 / Server2008 R2,2009)

核心协议升级

  1. Aero 透明效果远程渲染(桌面合成管线重定向);
  2. H.264 硬件加速流媒体编码、视频硬解重定向,视频播放不再色块糊化;
  3. RemoteFX GPU 虚拟化(VDI 显卡直通)、USB 设备完整重定向(U 盘、加密狗、摄像头);
  4. 音频双向通话(麦克风输入回传到远程主机,早期语音通话)。

MSTSC

支持自适应窗口缩放、动态分辨率适配;会话挂起快速重连。

.rdp 扩展字段

新增usbdevicestoredirectUSB 重定向、aero:i:1透明开启、videoplaybackmode视频编码模式;
 
企业 VDI 场景大规模使用签名 rdp 文件批量下发瘦客户端。

五、网络革命性升级:RDP 8.0 / 8.1(Win8 / Server2012,2012–2013)

RDP 历史网络层最大升级,解决弱网、高延迟、丢包痛点

RDP 8.0 核心改动

  1. UDP+TCP 双传输通道:TCP 做控制信令,UDP 承载画面、音频实时流,高延迟互联网远程流畅度提升数倍;
  2. 自适应有损压缩、动态带宽探测、抖动缓冲;
  3. RemoteFX vGPU 增强、DirectX 11 远程渲染;
  4. 强制 TLS1.1/TLS1.2,淘汰 RC4 弱加密。

RDP 8.1(重要企业安全更新)

  1. Restricted Admin 受限管理员模式:登录不传输凭据到远程 LSASS,抵御哈希传递 PtH 攻击;
  2. 会话影子(Shadow 会话监控,运维审计远程桌面操作);
  3. 修复 Office 远程界面渲染 BUG、断线自动快速重连;
  4. 修复 CredSSP 早期漏洞预埋(后续修复 CVE-2018-0883 蓝屏漏洞核心底层)。

MSTSC & .rdp

  • .rdp新增networkautodetect:i:1网络自动探测、udptransport:i:1UDP 开关、restrictedadminmode:i:1受限管理员模式;
  • rdpsign 支持更强哈希签名,组策略可限制仅信任签名后的 RDP 文件。

六、高清高 DPI 现代化:RDP 10.x(Win10 1607 起步,2016 至今)

RDP10.0~10.7 核心特性

  1. HiDPI 高分屏自适应缩放(4K/2K 笔记本远程适配,界面不会过小 / 模糊);
  2. H.264/AVC+AV1 渐进式编码、色块压缩优化,4K 远程桌面可用;
  3. 摄像头 / 麦克风虚拟通道优化、Teams/Zoom 远程视频通话兼容;
  4. Remote Credential Guard 远程凭据保护,凭据不落地远程服务器内存,根治凭证窃取漏洞;
  5. 强制禁用 TLS1.0/1.1,全线 TLS1.2+,修复 CredSSP 所有高危漏洞(永恒之蓝衍生 RDP 漏洞全部封堵);
  6. Azure 云桌面、Azure AD 账号直接 RDP 登录(脱离传统 AD 域)。

MSTSC 变化

经典 mstsc.exe 保持兼容,微软同时推出UWP 现代远程桌面客户端(Microsoft Store),跨平台(Windows/Android/iOS/Mac),但 UWP 不支持受限管理员、凭据保护等高级企业特性,仅经典 mstsc 完整支持全协议能力。

.rdp 文件现代化改造

  1. rdpsign命令升级/sha256签名,废弃 SHA1 弱哈希签名(Win2016+),加固配置篡改防护;
  2. 新增highresolutionmode高分适配、cameraredirect摄像头重定向、credentialguard凭据守卫开关;
  3. 配置项精细化拆分:外设、音频、图形、网络、安全五大类配置键,可精细化禁用单项设备重定向。

七、2025–2026 最新安全加固(Win11 26Hx 分支).rdp 文件防钓鱼重大变革

关键变更(CVE-2026-26151 漏洞防御)

  1. 双击未签名外部.rdp 不再静默连接,强制弹出安全告警弹窗;
  2. 弹窗明文展示:目标 IP / 域名、申请重定向的本地资源(磁盘、剪贴板、摄像头、USB);
  3. 所有本地资源重定向默认全部关闭,必须手动勾选开启,恶意 rdp 无法静默挂载本地磁盘窃取文件;
  4. 组策略可直接拦截未签名、互联网来源的.rdp 配置文件打开。

.rdp 安全边界

明文 INI 结构保留,但系统增加运行时沙箱校验,不再单纯依赖文件签名做信任判断。

八、.rdp配置文件格式整体演进总结

时期 文件结构 安全特性 核心配置能力
RDP4 无 rdp 文件 无配置导出
RDP5.x 纯明文 INI 无签名、密码可明文写入 分辨率、打印机、剪贴板、串口映射
RDP6.x 明文 INI + 凭据外部存储 rdpsign SHA1 签名 多显示器、RemoteApp、NLA 认证
RDP8.x 明文 INI UDP 开关、受限管理员标记 弱网 UDP 传输、会话影子
RDP10+ 明文 INI SHA256 签名、凭据守卫配置 4K 高分、音视频外设精细化控制
Win11 26H1 明文 INI + 系统运行时校验 打开强制安全弹窗 外设默认禁用、钓鱼拦截

九、MSTSC 命令行关键参数演进脉络

  1. 早期:mstsc /v:IP 基础指定地址;
  2. RDP5.2:mstsc /console 控制台会话;
  3. RDP6.0:mstsc /admin 管理员模式(替换 console)、mstsc file.rdp加载配置文件;
  4. RDP8.1:支持启动受限管理员模式;
  5. RDP10:配合组策略启用 Credential Guard 启动参数适配。

十、整体演进逻辑总结

  1. 传输链路:纯 TCP 位图 → TCP+UDP 双链路自适应传输,适配局域网 + 公网互联网远程;
  2. 图形渲染:8 位位图 → Aero 合成 → H.264/AV1 硬编 → 4K HiDPI 自适应,从办公文字到视频 / 设计场景全覆盖;
  3. 外设能力:仅键鼠 → 打印机 / 磁盘 / 剪贴板 → USB / 摄像头 / 麦克风全设备重定向;
  4. 安全演进:明文弱加密 → TLS+NLA → 受限管理员 → 凭据守卫 → RDP 文件防钓鱼全链路防护,封堵 RDP 历史上大量高危漏洞(永恒之蓝、CredSSP 漏洞、RDP 钓鱼漏洞);
  5. 配置体系:无配置文件 → 明文 rdp → 签名 rdp → 系统级运行时校验 rdp,适配个人运维、企业批量 VDI、云桌面全场景。

补充:协议向下兼容规则

高版本 RDP 客户端(新版 mstsc)可向下协商连接低版本 RDP 服务器,但低版本 XP/2003 RDP5.x 客户端无法连接开启 NLA 的 Win7 + 服务器,是运维经典兼容性断点。

MSTSC.exe + RDP 协议 + .rdp 配置文件 全链路底层解构

整体分为五层拆解:
  1. 顶层入口:mstsc.exe 主程序执行逻辑
  2. .rdp 配置文件解析底层结构、加载逻辑
  3. 模块依赖 DLL/SYS 驱动依赖链
  4. RDP 会话建立完整逻辑链路(配置读取→认证→传输通道→渲染→外设重定向)
  5. 持久化存储(凭据、位图缓存、会话状态、注册表配置)
  6. 子组件:rdpsign、mstscax.dll ActiveX 控件、RemoteApp 载体

一、主程序:mstsc.exe 基础信息

基础属性

  • 路径:C:\Windows\System32\mstsc.exe(32 位在 SysWOW64)
  • 类型:Win32 GUI 可执行程序
  • 核心职责:
    • 图形配置界面(连接选项卡)
    • 加载.rdp配置文件 / 命令行参数
    • 实例化 RDP ActiveX 核心控件 mstscax.dll
    • 会话生命周期管理(连接、断开、重连、影子会话、管理员模式)
    • 调用系统加密、凭据、网络栈完成握手

启动分支(3 种启动模式逻辑分流)

  1. 命令行直连
     
    mstsc /v:192.168.1.100 /admin
     
    直接跳过配置 GUI,构造参数传入 RDP 控件建立会话。
  2. 加载 RDP 文件
     
    mstsc D:\server.rdp
     
    主程序调用 INI 解析器读取 rdp 键值,覆盖默认配置。
  3. 纯 GUI 启动
     
    双击 mstsc,弹出配置窗口,用户配置后临时生成内存 RDP 配置,发起连接。

关键启动参数底层映射

参数 底层作用 映射 RDP 配置键
/v:地址 设置目标主机地址 full address:s:
/admin 管理员会话(替代旧/console administrative session:i:1
/shadow:sessionid 会话影子监控 影子通道专用标记
/restrictedAdmin 受限管理员模式 restrictedadminmode:i:1
/f 全屏启动 screen mode id:i:2
/w:宽 /h:高 固定分辨率 desktopwidth:i / desktopheight:i
/edit 仅打开 rdp 配置编辑器,不连接 仅 GUI 加载解析,不初始化网络

二、.RDP 配置文件 底层完整解构

2.1 文件格式基础

.rdp = 标准 Windows INI 文本格式,无二进制结构,纯键值文本,编码 ANSI/UTF8 均可。
 
语法固定规则:
 
键名:类型标识:值
  • :s: = 字符串(address、域名、路径、名称)
  • :i: = 整数(布尔开关、分辨率、枚举值)
  • :b: = 二进制 Base64(极少用,早期密码明文存储)
示例标准行:
ini
full address:s:10.0.0.5
screen mode id:i:2
redirectclipboard:i:1

2.2 RDP 配置四大作用域(优先级从高到低)

  1. .rdp 文件配置(最高) 加载后覆盖所有默认值
  2. mstsc 命令行参数 覆盖 RDP 文件同配置项
  3. 当前用户注册表默认配置
     
    路径:HKCU\Software\Microsoft\Terminal Server Client\Default
     
    历史连接地址、默认显示、资源重定向默认值
  4. 机器级全局组策略配置(最低,强制锁死)
     
    路径:HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Client
     
    组策略强制禁用磁盘重定向、禁用 UDP、强制 NLA、强制 TLS 版本,用户配置无法覆盖

2.3 RDP 配置键逻辑分组(功能模块化)

1)连接基础组(握手核心)

  • full address:s 目标 IP / 域名 / FQDN
  • server port:i 自定义端口(默认 3389)
  • username:s 预填登录用户名
  • authentication level:i NLA 认证级别(0~4,控制证书校验严格度)
  • enablecredsspsupport:i 是否启用 CredSSP 协议(NLA 依赖)

2)显示渲染组

  • desktopwidth:i / desktopheight:i 分辨率
  • screen mode id:i 1 = 窗口 2 = 全屏
  • multimon:i 多显示器开启
  • dynamic resolution:i 动态分辨率自适应
  • highresolutionmode:i HiDPI 高分缩放
  • aero:i Aero 合成效果开关(Win7 后)

3)本地资源重定向(安全核心项)

  • redirectclipboard:i 剪贴板双向映射
  • redirectdrives:i 全部本地磁盘挂载到远程
  • redirectprinters:i 打印机重定向
  • redirectcomports:i 串口
  • usbdevicestoredirect:s USB 设备白名单 / 黑名单
  • redirectcamera:i 摄像头重定向

4)音频多媒体组

  • audio mode:i 0 本地播放、1 远程播放、2 静音
  • audiocapturemode:i 麦克风输入重定向
  • videoplaybackmode:i H.264 视频硬编码

5)网络传输组(RDP8+)

  • udptransport:i UDP 传输启用(0 禁用 1 启用)
  • networkautodetect:i 网络带宽自动探测
  • bandwidthautodetect:i 动态压缩适配

6)安全加固组(企业防护)

  • restrictedadminmode:i 受限管理员 PtH 防护
  • credentialguardredirect:i 远程凭据守卫
  • signscope:s RDP 签名校验标记(rdpsign 写入)

7)RemoteApp 专属标记

  • remoteapplicationmode:i:1 开启单应用模式
  • remoteapplicationprogram:s 远程程序路径
  • remoteapplicationcmdline:s 启动参数

2.4 RDP 文件签名机制(rdpsign.exe 底层)

  1. 工具路径:C:\Windows\System32\rdpsign.exe
  2. 签名原理:对整个 RDP 文本内容做 SHA256 哈希,附加数字证书签名写入文件尾部隐藏区块(不破坏 INI 明文结构)
  3. 校验逻辑:mstsc 加载 RDP 时读取签名,重新计算文件哈希比对;篡改任意配置行,签名失效,系统弹出安全警告
  4. 命令:
cmd
rdpsign /sha256 "证书指纹" connect.rdp  # 签名
rdpsign /verify connect.rdp            # 校验签名合法性
Win11 新版本:未签名互联网来源 RDP,默认拦截高危资源重定向。

2.5 废弃历史配置项

  • password 51:b: 早期 Base64 存储明文密码(XP/2003),Vista 之后直接废弃,不再解析,密码统一存入Windows 凭据管理器(Vault)
     
    凭据存储路径:
     
    HKCU\Software\Microsoft\Terminal Server Client\Credentials
     
    对应系统凭据库:C:\Users\<User>\AppData\Local\Microsoft\Credentials

三、MSTSC 完整依赖文件拓扑(核心依赖 DLL、驱动、组件)

3.1 核心主控组件(强制依赖,缺失 mstsc 直接无法运行)

  1. mstscax.dll(最核心,RDP ActiveX COM 控件)
     
    路径:System32\mstscax.dll
     
    功能:RDP 协议栈全部实现、TCP/UDP 通道、TLS 加密、图形渲染、通道管理、外设重定向、NLA/CredSSP 认证、会话状态控制。
     
    mstsc.exe 本身只是外壳,所有 RDP 核心逻辑全部由 mstscax.dll 承载
  2. crypt32.dll / schannel.dll
     
    Schannel:Windows TLS/SSL 协议实现,负责 3389 端口 TLS 握手、证书校验、链路加密(RDP8 + 强制 TLS1.2)。
  3. credssp.dll
     
    CredSSP 协议实现,NLA 网络级别认证核心组件,前置身份验证,未通过认证不建立 RDP 会话。

3.2 图形渲染依赖(画面输出)

  1. rdpdd.dll RDP 显示驱动,远程画面本地渲染合成
  2. dwmapi.dll DWM 桌面合成接口(Aero、透明、高分缩放)
  3. mfplat.dll / mf.dll Media Foundation,H.264/AVC 视频硬编码解码(RemoteFX 视频流)

3.3 外设重定向通道驱动(各类设备映射)

DLL/SYS 作用
rdpclip.dll 剪贴板重定向通道
rdpsnd.dll 音频播放重定向
rdpdr.sys(内核驱动) 磁盘、打印机、串口即插即用重定向内核驱动
usbredirector.dll USB 设备虚拟化重定向
cameraredirect.dll 摄像头虚拟通道

3.4 网络层依赖

  1. ws2_32.dll Winsock TCP 套接字基础
  2. msudp.dll RDP8+ UDP 传输通道实现
  3. dnsapi.dll 域名解析

3.5 辅助工具依赖(配套组件)

  1. rdpsign.exe RDP 签名工具
  2. mstsc.exe /shadow 依赖 tsuserex.dll 终端服务用户扩展(会话影子)
  3. tscon.exe / tsdiscon.exe 会话管理配套命令行工具(终端服务工具集)

3.6 内核层底层依赖(终端服务系统服务)

服务名称:TermService(Terminal Services)
 
可执行文件:svchost.exe -k termsvcs
 
作用:本机作为 RDP 服务器时使用;客户端 mstsc 连接不需要 TermService 服务运行,客户端完全无服务依赖,纯用户态 COM 组件实现。

四、RDP 会话建立完整逻辑链路(从双击 RDP 文件到桌面显示全流程)

阶段 1:文件加载与配置合并(mstsc.exe)

  1. 双击xxx.rdp,系统关联 mstsc.exe 打开文件
  2. mstsc 读取 RDP INI 全部键值
  3. 合并三层配置:RDP 文件 → 命令行 → 用户注册表默认值
  4. 若开启 RDP 签名校验:调用 rdpsign 校验文件完整性,篡改则弹窗阻断
  5. 初始化 COM 组件,创建MsRdpClient.MsRdpClient9 ActiveX 对象(mstscax.dll)
  6. 将合并后的全部配置写入 ActiveX 控件属性

阶段 2:凭据准备(CredSSP/NLA 前置认证)

  1. 控件读取配置内用户名,查询 Windows 凭据管理器是否保存对应服务器凭据
  2. 无凭据则弹出账号密码输入框
  3. 启用 NLA 时:先通过 CredSSP 向 3389 端口做身份验证,认证失败直接终止,不建立 TCP 长连接(防御端口扫描暴力破解)
  4. 受限管理员模式:凭据仅用于认证,不向远程服务器 LSASS 传递明文 / 哈希凭证

阶段 3:网络链路握手(TCP+UDP 双通道协商)

  1. TCP 连接目标主机 3389 端口,完成 TCP 握手
  2. Schannel 启动 TLS 握手(RDP 早期 RC4 加密已被彻底废弃),整条链路 TLS 加密
  3. RDP 协议版本协商(客户端最高版本 ↔ 服务器支持版本向下对齐)
  4. RDP8+:协商 UDP 辅助通道(端口 4343/UDP),用于实时音视频、画面数据流,TCP 仅做信令控制

阶段 4:静态能力协商(通道、外设、渲染能力交换)

客户端 ↔ 服务端交换能力集:
  • 是否支持多显示器、H.264 硬编、USB 重定向、麦克风、剪贴板
  • 启用 / 禁用对应虚拟通道(RDP 虚拟通道是外设 / 多媒体传输载体)
  • 磁盘、打印机、串口设备枚举,准备重定向通道

阶段 5:图形会话创建与画面传输

  1. 服务端创建终端会话(普通会话 / 管理员会话 / RemoteApp 单应用会话)
  2. 服务端 GDI / 桌面合成画面通过 RDP 压缩编码(位图 / H.264)下发
  3. 本地 rdpdd.dll 渲染画面到 mstsc 窗口
  4. 键鼠操作本地采集,通过 TCP 信令通道回传到远程服务器

阶段 6:虚拟通道业务数据流并行运行

多条虚拟通道独立并行工作:
  • CLIPRDR:剪贴板双向同步
  • RDPDR:磁盘文件读写、打印机指令
  • RDPSND:音频下行
  • AUDIOINPUT:麦克风上行
  • USB:USB 设备报文透传

阶段 7:会话维持与断开处理

  1. 心跳包保活,网络闪断自动重连(RDP8 + 快速重连)
  2. 主动关闭窗口:发送会话注销 / 断开指令,优雅释放所有虚拟通道、TCP/UDP 套接字
  3. 异常断连:直接销毁套接字,会话在服务器端保持挂起状态,可重连恢复

五、运行时持久化缓存与存储位置

1)历史连接记录(下拉地址列表)

注册表:HKCU\Software\Microsoft\Terminal Server Client\Default
 
MRU0~MRU9 为最近 10 条连接地址

2)位图持久化缓存(降低重复画面带宽)

路径:
 
%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache
 
bcache*.bmc 位图缓存文件,缓存桌面图标、静态背景,重复画面无需重复传输。

3)会话日志

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → TerminalServices-ClientActiveXCore
 
记录连接成功、断开、认证失败、协议协商错误日志。

六、关键边界逻辑:客户端 vs 服务端拆分(极易混淆)

  1. MSTSC.EXE = 纯 RDP 客户端
     
    不需要开启TermService终端服务,仅依靠 mstscax.dll 用户态组件即可连接外网服务器。
  2. Windows 作为 RDP 服务器
     
    必须启动TermService,防火墙放行 3389/TCP,配置系统用户远程登录权限,监听 RDP 接入。
  3. `.rdp 文件是客户端专属配置 **,服务器不读取 RDP 文件,仅根据协议协商能力。

七、典型故障对应底层模块定位

  1. RDP 证书报错、TLS 握手失败 → schannel.dll 证书 / 系统 TLS 版本配置问题
  2. 剪贴板无法复制 → rdpclip.dll 通道异常,重启客户端剪贴板进程
  3. 磁盘映射不显示 → rdpdr.sys 内核驱动异常
  4. 公网远程卡顿、画面延迟 → UDP 通道未启用(udptransport:i:1)、4343UDP 端口未放行
  5. 打开 RDP 文件提示签名无效 → RDP 文件被修改或证书过期
  6. NLA 认证失败 → credssp.dll 配置、服务器组策略 NLA 强制开启

八、整体架构总结

  1. mstsc.exe 是轻量化 GUI 外壳,全部核心能力由 COM 组件mstscax.dll实现;
  2. .rdp是纯 INI 配置载体,负责一次性交付连接、渲染、外设、安全策略,加载时合并多级配置;
  3. 传输架构:TLS 加密 TCP 信令 + RDP8+UDP 媒体数据流,虚拟通道拆分所有外设 / 媒体业务;
  4. 安全演进依托:CredSSP (NLA)→受限管理员→凭据守卫→RDP 文件签名校验多层防护;
  5. 外设重定向依靠内核驱动rdpdr.sys+ 用户态通道 DLL 组合实现设备虚拟化映射。

 

RDP 体系 Web 网页接口、标准规范、合规调用全梳理

整体分为原生 RDWeb (rdpwsx.dll 承载 Web 接口)、RDS 管理 REST/WMI 接口、客户端唤起 URI 协议、HTML5 Web 客户端接口、RD 网关隧道接口五大类,同时明确合规边界、调用规范、风险管控要求。

一、经典 RDWeb(rdpwsx.dll)原生 Web 接口(IIS 承载,ISAPI 后端)

1. 核心 URL 接口清单(对外可访问网页端点)

RDWeb 站点根路径默认:https://RDWeb服务器/RDWeb/
接口路径 请求方式 核心能力(rdpwsx.dll 后端处理) 入参 / 作用
/RDWeb/login.aspx POST AD 域账号表单认证、会话 Cookie 签发 UserName/UserPassword/Domain,完成身份鉴权,rdpwsx 调用adsldp32.dll做 LDAP 校验
/RDWeb/feeddiscovery.aspx GET 用户资源目录发现(RemoteApp + 桌面列表) 认证 Cookie,返回用户可访问应用清单、RDP 生成元数据
/RDWeb/Desktops/Default.aspx GET 发布桌面列表页面渲染 基于会话权限过滤桌面资源
/RDWeb/RemoteApps/Default.aspx GET RemoteApp 单应用列表渲染 读取 RDS 连接 Broker 发布信息
/RDWeb/download.aspx GET 核心 RDP 配置文件动态生成接口 Query 参数:Application/Desktop,rdpwsx 拼接完整 RDP INI 配置、自动附加 RDP 数字签名、返回.rdp文件流
/RDWeb/password.aspx POST 域用户自助密码修改 旧密码 / 新密码,rdpwsx 完成 AD LDAP 密码更新
/RDWeb/logout.aspx GET 销毁身份 Cookie,退出门户 清除 RDWeb 会话凭证

2. rdpwsx.dll 接口底层规范

  1. 传输强制规范:必须绑定 HTTPS (TLS1.2+),禁止 HTTP 明文,rdpwsx 在 IIS 层拒绝非 SSL 请求;
  2. 认证规范:表单 Cookie 认证,会话超时默认 30 分钟,无原生 API Key 鉴权;
  3. RDP 文件生成规范:严格遵循 RDP 文件 INI 标准,自动填充:网关地址、NLA 开关、受限管理员模式、重定向权限、签名区块;
  4. 签名联动规范:后端调用rdpsign.exedownload.aspx输出的 RDP 文件做哈希签名,签名证书由服务器本地证书库读取。

3. 合规调用约束

✅ 合规场景:企业内网门户嵌入、SSO 对接、内部运维自动化拉取 RDP 配置;
 
❌ 禁止场景:公网直接暴露download.aspx无防护调用、直接拼接参数遍历应用(存在权限越界风险);
 
合规加固:IP 白名单、MFA 二次认证、禁用匿名访问、RDP 文件强制签名、接口访问日志全审计。

二、RDS 官方标准化管理接口(REST/WMI/PowerShell,用于上层平台集成)

1. Azure 虚拟桌面 (AVD) 官方 REST API(云原生标准化接口)

官方文档:Azure 虚拟桌面 REST API
 
核心接口能力:
  • 工作区订阅源获取:GET /api/arm/feeddiscovery(HTML5 Web 客户端订阅接口)
  • 会话主机、应用组、会话生命周期管理接口
  • 规范:OAuth2.0 Entra ID 鉴权、JSON 载荷、TLS 加密,完全合规用于 SaaS 门户集成
限制:无直接导出.rdp文件的公开 REST 接口,官方推荐使用 URI 协议唤起客户端而非文件下发Microsoft ...

2. 本地 RDS WMI 管理接口(服务端运维 Web 适配)

命名空间:root\CIMV2\TerminalServices,可通过 WMI over HTTP(IIS 承载)对外调用
 
核心类:
  • Win32_TSRemoteDesktop:查询发布桌面资源
  • Win32_TSRemoteApp:查询发布 RemoteApp 程序
  • Win32_TSSession:查询 / 断开在线 RDP 会话
     
    合规要求:WMI over HTTP 必须 IP 白名单 + 账户强口令,禁止公网开放 WMI 端口 5985/5986。

3. PowerShell RDS 管理接口(可封装 Web API 网关)

模块:RemoteDesktopServices,可通过 PowerShell Web Access (PWA) 封装为 Web 接口
 
核心命令:
powershell
# 获取用户可用RemoteApp
Get-RDRemoteApp -CollectionName "应用集合名"
# 生成RDP配置模板
New-RDRemoteAppConnectionFile
合规:PWA 仅内网部署,禁止公网直接暴露 PowerShell 执行入口。

三、浏览器唤起 RDP 客户端标准 URI 协议接口(前端 Web 直接调用,系统原生协议)

1. Windows 原生rdp://协议(最通用前端唤起)

协议格式规范

plaintext
rdp://<服务器地址>:<端口>?username=xxx&password=xxx&gateway=RDGW地址

Web 前端调用示例

html
 
预览
<a href="rdp://10.0.0.1:3389">直接启动RDP连接</a>

合规边界

  • 优势:无需后端接口,浏览器直接唤起mstsc.exe,无 rdpwsx 依赖;
  • 风险:URL 明文携带账号密码极易泄露,合规环境禁止拼接账号密码参数
  • 合规用法:仅传递目标地址,凭据由系统凭据管理器预存(cmdkey.exe预配置)。

2. 新版统一客户端 URI 规范(ms-rd: /ms-avd:)

  1. ms-rd:subscribe:唤起新版远程桌面客户端订阅 RDWeb 订阅源
plaintext
ms-rd:subscribe?url=https://rdweb.example.com/RDWeb/feeddiscovery.aspx
  1. ms-avd:connect:Azure 虚拟桌面专用连接唤起协议Azure
     
    合规价值:现代协议不支持明文密码写入,安全性高于老旧rdp://协议,推荐企业门户使用。

3. ActiveX COM 接口(老旧 IE 模式,已淘汰)

接口:IMsRdpClientShell2IMsRdpWorkspace(MsTscAx.dll COM 组件)Microsoft ...
 
用途:IE 浏览器内嵌 RDP 窗口,无文件下载;
 
合规结论:全面禁止使用,现代 Edge/Chrome 不再支持 ActiveX,存在远程代码执行历史漏洞,仅存量老旧系统利旧。

四、HTML5 原生 RDP Web 客户端接口(无插件浏览器 RDP,微软官方)

1. 接口架构

前端:JavaScript WebSocket/WebTransport,后端:RD Web HTML5 网关(不再依赖 rdpwsx.dll ISAPI)

2. 核心交互接口

  1. 订阅源接口GET https://RDWeb/RDWeb/webclient/feeddiscovery,获取应用列表;
  2. 会话启动接口POST /RDWeb/webclient/connect,协商 WebSocket 隧道;
  3. 底层协议:基于MS-RDPEWA(RDP WebSocket 封装协议,2026 年更新至 V3.0),将标准 RDP 流量封装在 HTTPS/WebSocket 中;

合规优势

  • 无本地客户端依赖,浏览器直接访问;
  • 全流量 TLS 加密、会话审计、剪贴板 / 文件重定向精细化管控,满足等保、HIPAA、PCI-DSS 合规要求;
  • 是微软主推的现代化 Web RDP 方案,逐步替代 rdpwsx.dll 传统下载 RDP 文件模式。

五、RD Gateway(远程桌面网关)Web 隧道接口(外网 RDP 穿透核心)

1. 网关 Web 端点

https://RDGW服务器/RDGateway/
 
接口能力:将 3389 RDP 流量封装为 HTTPS 隧道,Web 端做前置鉴权(CAP/RAP 访问策略)

关键 Web 接口

  • /RDGateway/rdgauthsvc.dll:网关账号认证接口;
  • 策略校验:连接前校验客户端 IP、用户权限、设备合规状态;

合规强制要求

  1. 必须启用 RD Gateway MFA 多因素认证;
  2. 配置会话超时、空闲断开、设备重定向黑名单;
  3. 全量连接日志留存≥6 个月,满足网络安全法审计要求。

六、整体合规落地规范(对外 Web 接口使用红线 + 最佳实践)

1. 合规强制规范

  1. 传输层:所有 RDP 相关 Web 接口强制 TLS1.2+,禁用 TLS1.0/1.1、HTTP 明文;
  2. 鉴权层
    • 传统 RDWeb:表单认证 + AD MFA,禁止匿名访问download.aspx
    • 云 API:OAuth2.0/Entra ID 令牌鉴权,短期令牌轮换;
    • 前端 URI:禁止 URL 携带账号、密码、凭据信息;
  3. 文件安全:RDWeb 下发 RDP 文件强制启用rdpsign签名,组策略拦截未签名 RDP 文件打开;
  4. 访问管控:公网接入仅允许「HTML5 Web 客户端 + RD 网关」架构,传统 RDWeb(rdpwsx)仅内网部署;
  5. 日志审计:IIS 访问日志、RDWeb 认证日志、RD Gateway 会话日志、RDP 连接事件日志统一接入 SIEM。

2. 接口选型合规建议

业务场景 推荐接口方案 规避方案
企业外网门户远程办公 HTML5 RD Web 客户端 + RD Gateway 直接暴露 rdpwsx 的 download.aspx
内部运维自动化集成 AVD REST API / WMI 内网调用 公网 WMI、PowerShell Web Access
前端轻量化唤起连接 ms-rd: 订阅协议 rdp:// 明文密码协议
存量老旧 RDS 升级 给 rdpwsx 站点加前置 WAF+MFA 直接公网发布 RDWeb 80/443 端口

3. 高风险接口禁用清单

  1. 禁用rdp://协议带明文账号密码的前端链接;
  2. 禁用 IE ActiveX 内嵌 RDP COM 接口;
  3. 禁用 RDWebdownload.aspx无参数鉴权直接对外开放;
  4. 禁用 RD Gateway 无策略限制的全域流量转发。
  1. rdpwsx.dll承载的经典 RDWeb 接口是传统 RDP 网页门户核心,核心是download.aspx动态生成签名 RDP 文件,属于存量兼容接口,不建议公网直接对外;
  2. 现代化合规 Web RDP 优先选择HTML5 Web 客户端(WebSocket RDP 封装)+RD Gateway 隧道,配套 AVD 标准化 REST API 做平台集成;
  3. 所有对外暴露的 RDP Web 接口必须落地 TLS 加密、多因素认证、权限最小化、全链路日志审计,规避凭据泄露、RDP 会话劫持、配置篡改等高危风险。

微软现代化 HTML5 Web RDP(RD Web HTML5 客户端)合规、调用、法律法规全依据手册

一、方案核心定位(微软主推现代化 Web RDP)

正式名称:Remote Desktop Web Client(HTML5 无插件 Web 客户端)
  • 淘汰老旧rdpwsx.dll ISAPI+.rdp文件下载架构,基于MS-RDPEWA 协议将原生 RDP 流量封装在 WebSocket/HTTPS(443 端口)传输;
  • 核心组件:RD Gateway(RD 网关隧道)+ RD Connection Broker + HTML5 前端静态资源 + Azure Entra ID 身份集成;
  • 核心优势:无本地 mstsc 依赖、无 3389 端口公网暴露、精细化会话管控、全链路日志、适配零信任架构,是微软官方唯一推荐对外公网远程桌面访问合规方案。

二、国内法律法规合规依据(强制落地条款)

1. 《中华人民共和国网络安全法》(2025 修正版)

表格
 
 
 
法条 合规适配点(HTML5 Web RDP 落地要求)
第二十三条(等保制度) 1. 完整记录 Web 门户认证、会话建立、断开、剪贴板 / 文件操作日志,日志留存≥6 个月;
 
2. 关闭内网主机 3389 公网直连,全部流量经由 443 网关封装;
 
3. 建立远程访问账号权限制度、闲置会话自动断开策略中国网络安...
第二十四条(产品安全维护) 服务器持续安装 RDS 月度安全累积补丁,禁用 TLS1.0/1.1 弱加密,强制 TLS1.2+;
 
禁用老旧 ActiveX、rdp:// 明文协议等高危组件中央网络安...
第四章 个人信息保护 遵循数据最小化:仅采集账号、登录 IP、会话日志;禁止在 URL、Cookie 存储明文账号密码;
 
用户可申请会话日志导出、账号权限注销中国人大网

2. 网络安全等级保护 2.0(GB/T 22239-2019 基本要求)

  1. 网络通信安全
    • 所有对外 Web 门户强制 HTTPS,使用商用 CA 证书,禁止自签名证书;
    • RDP 原生流量 100% 封装于 RD Gateway HTTPS 隧道,内网主机禁止公网 3389 放行;
  2. 访问控制
    • 对接 AD/Entra ID 实现多因素认证(MFA),账号失败锁定防暴力破解;
    • 基于用户组管控剪贴板双向传输、文件上传下载、USB 重定向权限;
  3. 安全审计
    • 整合 IIS 日志、RD Gateway 会话日志、RDS 主机登录日志至 SIEM 平台,支持异常登录溯源审计。

3. 《数据安全法》《个人信息保护法》

  1. 远程桌面会话中业务数据不出计算主机,禁止客户端直接文件落地导出;
  2. 跨境办公场景需完成数据出境安全评估,Azure 中国世纪互联版本满足境内数据存储合规;
  3. 会话截屏、操作审计需告知用户,实现合规留痕。

4. 关键信息基础设施保护条例

政企、金融、医疗关键业务使用时:
  • 部署前置 WAF 防护 RD Web 门户 443 端口;
  • 地理 IP 封禁,阻断非办公区域 IP 接入;
  • 会话最长生命周期限制(4 小时强制下线)。

三、国际行业合规认证依据(跨境 / 外资企业适用)

微软 Azure AVD+HTML5 Web RDP 平台自带合规资质,可直接用于合规审计:
  1. ISO 27001、ISO27018、ISO27701:信息安全、云隐私合规,微软提供官方审计报告Microsoft ...;
  2. HIPAA(医疗):签署 BAA 业务合作协议,满足医疗电子病历远程访问合规管控(剪贴板禁用、会话全审计);
  3. PCI-DSS(金融支付):可关闭文件 / 剪贴板重定向,禁止卡号通过远程桌面外传;
  4. GDPR(欧盟业务):支持用户数据主体请求(会话日志删除、账号停用、数据导出),符合数据遗忘权要求Microsoft ...;
  5. SOC2、NIST SP800-53:云运维内控审计适配。

四、标准化 Web 接口调用规范(合规调用链路,禁止非标改造)

(一)前端浏览器标准化接入接口(原生 HTML5 客户端)

访问入口:https://<RDWeb域名>/RDWeb/webclient/index.html

核心 REST/WebSocket 接口(微软原生规范,禁止篡改参数)

  1. 身份订阅接口(GET)
     
    /RDWeb/webclient/feeddiscovery
     
    用途:用户登录后拉取授权桌面 / RemoteApp 列表,鉴权依赖 Entra ID/AD Cookie,无自定义 API Key;
     
    合规约束:禁止匿名访问,必须前置身份鉴权。
  2. 会话协商接口(POST)
     
    /RDWeb/webclient/connect
     
    用途:发起 WebSocket 隧道,通过MS-RDPEWA协议封装 RDP 报文;
     
    传输规范:WebSocket over TLS1.2,载荷 AES 加密,禁止明文裸 RDP。
  3. 会话管控接口
  • 空闲心跳上报、会话主动销毁接口,用于实现超时自动断开。

(二)后端管理标准化接口(用于平台集成,仅内网调用)

  1. Azure 虚拟桌面(AVD)官方 REST API(OAuth2.0 鉴权)
     
    接口文档:Azure Desktop Virtualization REST API
     
    能力:工作区发布、会话主机扩容、用户会话强制下线、应用权限分配;
     
    合规要点:使用短期 OAuth2 令牌,令牌有效期≤2 小时,禁止长期静态密钥公网调用。
  2. 本地 RDS PowerShell 管理接口(内网封装 WebAPI 网关)
     
    模块:RemoteDesktopServices
powershell
 
 
 
# 合规会话处置(审计场景)
Disconnect-RDUser -HostServer 会话主机 -UnifiedSessionId 会话ID
Get-RDUserSession | Export-Csv 会话审计日志.csv
 
禁止直接公网暴露 PowerShell Web Access(PWA)。

(三)统一客户端唤起协议(前端门户跳转合规协议)

  1. ms-rd:subscribe(推荐合规协议)
plaintext
 
 
 
ms-rd:subscribe?url=https://rdweb.company.com/RDWeb/webclient/feeddiscovery
 
特性:无明文账号密码,仅传递订阅源地址,凭据由 Entra ID 托管;
 
2. ❌ 禁止使用老旧rdp://user:pass@ip协议(凭据明文泄露,合规红线)。

(四)RD Gateway 网关 Web 隧道接口(边界核心)

端点:https://<RDGW域名>/RDGateway/rdgauthsvc.dll
 
能力:外网用户先完成网关鉴权(CAP/RAP 策略校验),再转发 WebSocket RDP 流量;
 
合规策略:网关配置连接授权策略(CAP)绑定用户 + 设备 + IP 白名单,资源授权策略(RAP)限定可访问内网主机列表。

五、合规部署硬性规范(微软官方最佳实践 + 合规验收项)

1. 网络边界合规(必做)

✅ 公网仅放行 TCP 443,彻底关闭所有公网 3389 端口入站规则,杜绝直接 RDP 爆破攻击;
 
✅ RD Web 门户前置 WAF,拦截 SQL 注入、路径遍历、异常高频请求;
 
✅ 内网分段:RD 网关部署在 DMZ 区域,禁止网关直接访问核心业务区。

2. 身份认证合规(零信任强制要求)

✅ 全部用户开启 MFA 多因素认证(Microsoft Authenticator);
 
✅ 禁用本地账号密码登录,统一对接 Entra ID/AD 域账号;
 
✅ 账号锁定策略:连续 5 次密码错误锁定账号 15 分钟。

3. 数据传输与重定向管控(防数据泄露核心)

按安全等级配置重定向权限:
安全等级 剪贴板 文件传输 USB / 打印机
普通办公 单向(仅本地→远程) 禁用 禁用
高密业务 完全禁用 完全禁用 完全禁用
✅ 强制 TLS 1.2/1.3,服务器侧禁用 TLS1.0、TLS1.1、RC4 弱加密套件。

4. 日志审计合规(等保验收核心)

需要归集 4 类日志至 SIEM:
  1. IIS RDWeb 访问日志(登录、页面访问、接口调用);
  2. RD Gateway 认证 & 连接日志(外网 IP、连接时长、策略放行 / 拒绝原因);
  3. RDS 会话主机登录事件(Windows 安全事件 4624/4625);
  4. HTML5 客户端前端操作日志(浏览器控制台会话日志导出);
     
    日志存储周期≥180 天,满足网安法审计要求Microsoft ...。

5. 证书合规

✅ 使用第三方商业 CA 证书(Digicert、DigiSigner 等),证书有效期≤1 年;
 
✅ 禁止自签名证书(中间人攻击风险,合规测评直接判定高风险);
 
✅ 证书私钥权限仅授予 IIS 应用池、RD 网关服务账号,最小权限原则。

六、老旧方案对比(合规性差异,淘汰 rdpwsx.dll 传统 RDWeb)

对比项 老旧 rdpwsx.dll+RDP 文件下载 现代化 HTML5 Web RDP(合规主推)
公网攻击面 存在 download.aspx 参数篡改、RDP 文件劫持风险 仅 443 WebSocket,无文件下发劫持
凭据安全 RDP 文件可缓存凭据,本地泄露风险 浏览器会话内存凭据,关闭销毁
重定向管控 全局配置,无法按会话精细化控制 用户组 / 会话级开关剪贴板、文件
日志能力 仅 IIS 基础日志,无会话操作细粒度日志 全链路网关 + 前端 + 主机三级审计
合规适配 无法满足等保三级远程访问要求 原生匹配等保 2.0、GDPR、HIPAA
微软支持 2022 年后停止功能迭代,仅安全补丁 持续功能更新、零信任适配迭代

七、合规红线禁止行为(直接造成合规失效 / 安全事件)

  1. ❌ 公网同时开放 3389 端口 + HTML5 Web 门户;
  2. ❌ RD Web 门户使用 HTTP 明文、自签名证书上线;
  3. ❌ 前端页面拼接rdp://协议写入账号、密码明文;
  4. ❌ 关闭 RD Gateway CAP/RAP 授权策略,全域内网无限制访问;
  5. ❌ 会话日志留存小于 6 个月,无集中审计平台;
  6. ❌ 传统 RDWeb(rdpwsx.dll)直接对公网发布使用。

八、整体合规落地总结

  1. 法律底座:以《网络安全法》+ 等保 2.0 为国内强制合规底线,跨境业务叠加 ISO27001、HIPAA、GDPR 微软原生合规资质;
  2. 架构选型:全盘替换rdpwsx.dll传统 RDP 下载门户,采用「HTML5 Web 客户端 + RD Gateway 隧道 + Entra ID MFA 零信任」架构;
  3. 调用规范:仅使用官方 WebSocket 订阅接口、AVD OAuth2 REST API、ms-rd:合规唤起协议,杜绝非标接口开发与明文凭据传输;
  4. 管控闭环:边界收口、身份强认证、数据重定向最小权限、全链路日志审计四大模块落地,完成远程桌面访问合规验收。

现代化合规 Web RDP 整体落地方案固化文档

核心架构:HTML5 Web RDP 客户端(MS-RDPEWA WebSocket 封装)+ RD Gateway 边界隧道 + Azure 虚拟桌面 (AVD) OAuth2 REST 管理 API,完全适配国内等保 2.0、网安法、数安法合规要求,替代老旧 rdpwsx.dll+RDP 文件下载架构。

一、整体架构分层(从外网到内网,边界收敛)

1. 外网接入层(DMZ 区)

  • 前置 WAF / 高防 IP:443 端口唯一对外暴露端口,拦截注入、暴力扫描、异常 WebSocket 连接;
  • RD Gateway(远程桌面网关):承载 HTTPS 隧道封装,所有 RDP 原生流量(3389)全部封装入 WebSocket over TLS1.3,内网主机 3389 端口全程禁止公网路由可达
  • RD Web HTML5 静态站点:仅部署前端页面,无 rdpwsx.dll ISAPI 动态生成 RDP 文件逻辑,消除配置篡改攻击面。

2. 身份认证层(零信任核心)

  • 统一身份源:Azure Entra ID / 本地 AD 域联合认证;
  • 强制 MFA 多因素认证:网页登录、网关接入双节点二次校验;
  • 会话 Cookie 短期时效(15 分钟),无持久化凭据落地。

3. 业务调度层(AVD / 本地 RDS)

  • AVD 连接代理(Connection Broker):根据用户权限分发桌面 / RemoteApp 资源;
  • AVD REST API 管理平面:对内运维平台提供标准化接口,不对外网开放。

4. 后端计算层(内网业务主机)

  • 会话主机池:仅允许 RD Gateway 内网 IP 访问 3389,配置主机侧登录审计、设备重定向策略。

二、HTML5 WebSocket RDP 核心通信规范(合规调用依据)

1. 协议标准:MS-RDPEWA(Remote Desktop over WebSocket)

微软公开协议文档:MS-RDPEWA 技术规范
  1. 承载层:WebSocket(wss://),底层 TLS1.2+/AES-256 加密,无明文 RDP 数据包;
  2. 数据包结构:RDP PDU 报文分段封装为 WebSocket 帧,由 RD Gateway 解包转发至内网会话主机;
  3. 会话生命周期接口(标准 Web 端点,禁止自定义改造)
    接口路径 协议 用途 合规约束
    /RDWeb/webclient/feeddiscovery HTTPS GET 权限资源发现(桌面 / 应用列表) 必须 Cookie/Entra 令牌鉴权,禁止匿名访问
    /RDWeb/webclient/connect WSS 建立 WebSocket RDP 隧道 网关前置 CAP/RAP 策略校验
    心跳 / 断开接口 WSS 空闲超时检测、会话销毁 强制最大空闲超时 30min 自动断连

2. 前端接入标准 URL

plaintext
https://RDWeb域名/RDWeb/webclient/index.html
优势:纯浏览器运行,无需安装 mstsc、无 ActiveX 插件、无.rdp文件本地缓存泄露风险。

3. 对比老旧 rdpwsx 架构核心安全增益

  • 消除download.aspx动态 RDP 文件劫持、签名绕过风险;
  • 会话凭据全部驻留浏览器内存,页面关闭凭据立即销毁;
  • 网关层可直接阻断文件 / 剪贴板双向传输,粒度细于 RDP 文件配置。

三、RD Gateway 隧道合规配置要点(边界收口核心)

1. 两大强制策略配置

  1. 连接授权策略(CAP)
     
    限制接入条件:用户组、MFA 校验、客户端设备合规状态、接入地理位置 IP 黑白名单;
  2. 资源授权策略(RAP)
     
    白名单限定用户可访问的内网主机集合,禁止网关横向遍历内网所有 3389 主机。

2. 网关日志合规项

开启完整连接日志:外网源 IP、认证结果、会话起止时间、放行 / 拒绝原因、传输流量,日志归集至 SIEM,留存≥180 天,满足等保三级审计要求。

3. 传输加固

网关 IIS 全站禁用 TLS1.0/1.1、弱加密套件(RC4、3DES),仅保留 TLS_AES_256_GCM_SHA384 等高强度加密套件。

四、AVD 标准化 REST API(平台集成合规使用规范)

1. 鉴权强制规范

全部接口采用Azure OAuth2.0 Client Credentials / 用户委托令牌鉴权,核心约束:
  • 令牌有效期≤2 小时,禁用永久静态 AccessKey;
  • API 仅在内网运维平台、堡垒机调用,禁止直接对公网暴露 AVD 管理 API

2. 高频合规集成接口(业务平台对接)

API 功能 接口用途 合规场景
工作区资源查询 GET /DesktopVirtualization/workspaces 运维门户展示可用桌面池
用户会话强制断开 POST 会话操作接口 应急权限回收、异常会话处置
会话主机状态监控 GET 会话主机指标 运维告警、容量伸缩
应用组权限分配 PUT 应用组授权 基于岗位最小权限分配远程资源

3. 部署形态区分

  1. 公有云 AVD(Azure Global):适合跨境业务,自带 GDPR、HIPAA、ISO27001 合规资质;
  2. 世纪互联 Azure 中国 AVD:境内数据不出境,适配《数据安全法》境内存储硬性要求。

4. 禁止行为

不使用 API 拼接直接生成 RDP 连接地址下发至前端,统一由 HTML5 前端订阅接口拉取资源,避免接口凭据泄露扩散。

五、前端合规唤起方式(门户跳转适配)

推荐合规协议:ms-rd:subscribe

plaintext
ms-rd:subscribe?url=https://rdweb.xxx.com/RDWeb/webclient/feeddiscovery
特性:仅传递订阅源地址,身份由 Entra ID 托管,无任何账号、密码明文拼接
 
❌ 严格禁用:rdp://user:password@ip明文协议,属于合规重大缺陷。

六、国内法律法规合规落地对照表

合规法规 架构落地匹配项
《网络安全法》 边界收敛(仅 443 出口)、账号暴力锁定、全链路日志审计、最小权限访问
《数据安全法》《个人信息保护法》 会话数据驻留内网主机、禁止客户端文件导出、用户操作留痕告知、权限可注销回收
等保 2.0(GB/T22239-2019)三级 WAF 防护、TLS 加密、MFA 双因素认证、网络访问控制、日志 6 个月留存、运维操作审计
关键信息基础设施保护条例 地理 IP 封禁、会话最长生命周期限制、前置高防抗 DDoS

行业专项合规适配

  1. 医疗(HIPAA):网关全局禁用剪贴板、文件重定向,医疗病历数据无法导出客户端;
  2. 金融(PCI-DSS):USB、打印机重定向全部关闭,支付敏感信息仅在远端会话展示;
  3. 政企涉密场景:内网 AVD 私有化部署,切断互联网出口,仅专线对接办公端 HTML5 门户。

七、整体架构优势总结

  1. 攻击面最小化:摒弃 rdpwsx.dll 动态脚本、RDP 文件下发、3389 公网暴露三大高危风险点;
  2. 合规原生适配:架构设计完全贴合零信任、等保、数据防泄露要求,可直接用于合规测评验收;
  3. 运维标准化:AVD REST API 实现运维平台自动化纳管,减少人工配置失误;
  4. 长期支持:为微软主力迭代产品线,持续更新安全补丁、零信任功能,无老旧组件停服风险。

八、上线验收必查项

  1. 公网端口:仅 TCP443 放行,无 3389、3391 等 RDP 相关端口对外开放;
  2. 证书:全站使用商用 CA 证书,无自签名证书;
  3. 认证:所有接入节点开启 MFA 多因素认证;
  4. 重定向策略:按业务等级配置剪贴板 / 文件 / USB 权限;
  5. 日志:RD 网关、IIS、RDS 主机日志完成集中归集。

rdpwsx.dll 三大核心问题完整解析

一、rdpwsx.dll 历史更新记录(版本 + 功能 + 安全补丁时序)

1. 初代版本(Windows Server 2003,v5.2.3790.x)

  • 定位:TSWeb 早期 ISAPI 扩展,基于 IIS6 经典 ASP 架构
  • 核心功能:仅实现 IE 内嵌 ActiveX RDP 控件、整桌面远程发布、HTTP 明文传输凭据
  • 短板:无 RemoteApp、无 RDP 文件签名、无 NLA 认证适配

2. 架构定型版(Server 2008 / Vista,v6.0.6001.x)

  • 重大重构:由 ASP 后端转为纯 ISAPI 扩展,改为动态生成.rdp 文件下载模式(沿用至 2022 年)
  • 新增:RemoteApp 单应用配置写入、强制 HTTPS、NLA 认证参数注入、多显示器分辨率适配
  • IIS 适配:支持 IIS7 集成管道模式

3. 企业稳定版(Server 2008 R2 / Win7,v6.1.7601.x,最广泛部署版本)

功能性更新

  1. 内置域用户自助密码修改(password.aspx后端逻辑补齐)
  2. 对接rdpsign.exe实现 RDWeb 服务端自动签名下发 RDP 文件
  3. 适配 RDP7.0 H.264 视频、USB 重定向、会话 Broker 负载均衡参数写入

关键安全补丁

  • MS12-020(2012.3,版本 6.1.7601.21980):修复畸形 HTTP 请求触发 RDWeb 拒绝服务漏洞,加固请求参数校验逻辑Microsoft ...
  • 月度累积补丁:持续修复路径遍历、RDP 配置参数注入漏洞

4. 网络增强版(Server 2012/2012R2,v6.2.9200.x/v6.3.9600.x)

  • 适配 RDP8.0/8.1:自动在 RDP 配置写入udptransport:i:1UDP 弱网加速、restrictedadminmode:i:1受限管理员防 PtH 攻击
  • 废弃 IE6/7 ActiveX 兼容逻辑,强化 RDWeb 证书强制校验
  • 支持会话影子连接参数动态生成

5. 云化兼容版(Server 2016~2022,v10.0.x)

  • 架构变化:传统 ISAPI 能力弱化,微软主推 HTML5 无插件 RD Web 客户端,rdpwsx 仅做存量 RDP 文件导出兼容
  • 安全加固:默认 SHA256 签名、生成 RDP 时默认关闭磁盘 / 剪贴板高危重定向、全站强制 TLS1.2+
  • 适配 Azure 虚拟桌面 (AVD) 混合部署场景

6. 弃用阶段(Win11 22H2+/Server 2025)

  • 状态:标记为 Deprecated(过时组件),不再新增功能,仅推送安全漏洞修复补丁
  • IIS 限制:新版 IIS 默认禁用 ISAPI 扩展,需手动开启才可加载 rdpwsx.dll

二、rdpwsx.dll 的 RDP 文件签名校验机制

1. 整体架构分工

  • 签名生成侧:rdpwsx.dll 在 RDWeb 站点配置开启「自动 RDP 签名」后,调用系统rdpsign.exe接口完成 RDP 文件哈希签名;
  • 校验侧:mstsc.exe/mstscax.dll 加载下载的 RDP 文件时,读取文件尾部附加的签名段完成完整性校验。

2. 密码学底层流程

  1. 原文哈希计算
     
    rdpwsx 拼接完整 INI 格式 RDP 配置文本,对全文计算 SHA256 哈希(2012 年后淘汰 SHA1)作为文件指纹。
  2. 私钥签名封装
     
    使用部署在 RDWeb 服务器的代码签名证书私钥,加密哈希值生成数字签名,将证书公钥链、加密哈希、时间戳写入 RDP 文件尾部隐藏区块,不破坏明文 INI 结构。
  3. 客户端校验逻辑(mstsc 侧)
    1. 读取 RDP 尾部签名数据,用证书公钥解密还原原始哈希;
    2. 客户端对当前 RDP 明文重新计算哈希,两者比对;
    3. 哈希不一致 → 判定文件被篡改,弹出「发布者不受信任」安全告警,高危资源重定向直接拦截;
    4. 哈希一致 → 信任发布者,正常加载 RDP 配置发起连接。

3. RDWeb 配置启用签名的前置条件

  1. 代码签名证书安装在服务器「本地计算机 - 个人证书存储」;
  2. IIS 应用池运行账号授予证书私钥读取权限;
  3. RDWeb 站点组策略开启「自动对下发 RDP 文件签名」,指定证书 SHA256 指纹。

4. 安全价值

杜绝攻击者篡改 RDWeb 下发的 RDP 文件(修改目标 IP、开启全盘磁盘重定向窃取文件),配合组策略可直接阻断所有未签名 RDP 文件打开。

三、rdpwsx.dll 依赖关系分析方法(静态 + 动态双层解析)

(一)静态依赖解析(PE 文件导入表解析,离线分析)

工具 1:Visual Studio dumpbin(命令行原生工具)

cmd
dumpbin /dependents C:\Windows\System32\rdpwsx.dll
直接输出一级直接依赖 DLL 列表,快速定位基础模块依赖:
  • 系统基础:kernel32.dlladvapi32.dll(注册表、文件操作)
  • IIS / 网络:w3core.dll(IIS ISAPI 核心)、ws2_32.dll(套接字)、schannel.dll(TLS 证书)
  • AD 认证:adsldp32.dll(LDAP 域账号校验、密码修改)
  • RDS 核心:rdpcore.dll(会话、应用列表查询)
  • 加密:crypt32.dll(签名证书解析)

工具 2:Dependency Walker / Dependencies(图形化递归依赖)

  1. rdpwsx.dll拖入工具,自动展开一级→二级→全链路依赖树
  2. 红色标记缺失 DLL、32/64 位架构不匹配模块(64 位系统存在 SysWOW64 32 位 rdpwsx.dll,容易架构错配);
  3. 可查看导出函数,确认 ISAPI 入口函数GetExtensionVersion(IIS 加载入口)。

(二)动态运行时依赖(上线加载链路,定位运行故障)

工具 1:Process Explorer(Sysinternals)

  1. 启动 RDWeb 站点,找到 IIS 工作进程w3wp.exe(RDWeb 专属应用池);
  2. 双击进程打开模块列表,筛选rdpwsx.dll,查看运行时加载的所有附属 DLL、句柄、注册表路径;
  3. 用于排查 IIS 加载 rdpwsx.dll 失败、证书权限不足问题。

工具 2:IIS 日志 + Windows 事件日志

  • IIS 日志:查看 ISAPI 扩展加载日志,确认 rdpwsx.dll 是否被 IIS 成功挂载;
  • 事件查看器 → Application日志:rdpwsx 加载失败、证书读取错误、签名调用失败会写入明确错误日志。

(三)上下游业务依赖拓扑梳理

上游依赖(调用方)

  1. IIS w3wp.exe:ISAPI 宿主进程,直接加载 rdpwsx.dll 处理 RDWeb 页面请求;
  2. Active Directory(LDAP):账号认证、域密码修改接口依赖;
  3. RD Connection Broker/RD Gateway:会话地址、网关地址拉取依赖。

下游依赖(输出对象)

  1. 内存 / 磁盘输出标准.rdp配置文件;
  2. 调用rdpsign.exe进程完成 RDP 签名;
  3. 最终交付mstsc.exe/mstscax.dll发起 RDP 会话。

(四)典型依赖故障定位

  1. RDWeb 页面 500 错误:Dependency Walker 发现w3core.dll缺失 → IIS ISAPI 组件损坏;
  2. RDP 自动签名失效:Process Explorer 查看 IIS 进程无证书私钥句柄 → 应用池账号无证书私钥权限;
  3. 域用户无法自助改密码adsldp32.dll加载异常 → LDAP 通信模块故障。

整体总结

  1. rdpwsx.dll 生命周期:功能建设期(2003-2008)→成熟期(2008R2-2012R2)→兼容衰退期(2016 至今),核心使命是 RDWeb 网页到 RDP 文件的转换与安全加固;
  2. 签名机制核心:基于非对称哈希签名保护 RDP 配置完整性,是企业 RDP 钓鱼防御关键控制点;
  3. 依赖分析采用「静态 PE 解析 + 动态进程抓包」组合,可覆盖部署故障、模块缺失、权限异常全场景排查。

rdpwsx.dll 完整演进解构

一、基础定位与核心职能

rdpwsx.dll = Remote Desktop Web Access Extension DLL
 
全称:RDP Web Extension DLL,属于RD Web Access(RDWeb,远程桌面网页门户)IIS ISAPI 扩展核心组件

核心底层职责

  1. IIS 请求拦截、解析 RDWeb 网页认证、AD 域身份校验;
  2. 动态生成标准.rdp配置文件(网页点击应用 / 桌面,后端由 rdpwsx.dll 拼接全部 RDP 参数输出 RDP 文件下载);
  3. RemoteApp 应用列表拉取、会话代理路由、RD 网关(RD Gateway)联动;
  4. 域用户自助密码修改页面后端逻辑(password.aspx底层依赖);
  5. 签名校验、凭据传递、NLA/CredSSP 会话前置鉴权适配;
  6. 网页端 ActiveX RDP 控件(旧 IE)参数注入。

部署路径

  • 系统路径:C:\Windows\System32\rdpwsx.dll
  • IIS 挂载形式:ISAPI 扩展,绑定在 RDWeb 站点/RDWeb应用池,IIS6/IIS7+ISAPI 筛选器加载。

上下游配套链路

上游:IIS 内核、AD 域认证、RD 连接代理(Connection Broker)、RD 网关;
 
下游:输出.rdp配置文件 → 交付 mstsc.exe/mstscax.dll 发起 RDP 会话。

二、分代版本演进(按 Windows Server 世代划分,对应 DLL 版本、架构、功能迭代、安全修复)

第一代:雏形版(Windows Server 2003 / XP,DLL 主版本 5.x)

  • DLL 版本:5.1.2600.x5.2.3790.x
  • 前身:TSWeb 网页远程桌面(IIS6 经典 ASP 架构),rdpwsx.dll 作为早期 ISAPI 扩展承接 ASP 后端逻辑
  • 核心能力:
    1. IE 浏览器加载 RDP ActiveX 控件内嵌远程桌面,不下载独立 rdp 文件;
    2. 仅支持整桌面发布,无 RemoteApp 单应用;
    3. 明文 HTTP,无强制 SSL,凭据网页明文提交;
  • 短板:无 RDP 签名、无 NLA 适配、加密薄弱、仅适配 IE 浏览器 ActiveX、无法生成标准化.rdp文件;
  • 定位:RDWeb 原型验证组件,企业外网临时网页远程。

第二代:架构定型(Windows Vista / Server 2008,DLL 版本 6.0.6001.x)

里程碑重构:RDWeb 正式组件化,rdpwsx.dll 成为官方核心 ISAPI 扩展
  1. 正式支持RemoteApp 单应用发布,rdpwsx.dll 根据应用属性自动写入remoteapplicationmode:i:1等 RDP 专用字段;
  2. 强制 SSL/TLS 绑定 RDWeb 站点,网页凭据 HTTPS 加密传输;
  3. 适配 RDP6.0 NLA 网络级别认证,在生成 rdp 时写入authentication level:i:2开启前置认证;
  4. 支持多显示器、桌面分辨率参数写入 RDP 配置;
  5. 废弃纯 ActiveX 内嵌模式,改为网页生成.rdp 文件下载 + 本地 mstsc 启动(沿用至今架构);
  • 配套变化:IIS7 集成管道模式支持 rdpwsx.dll ISAPI,脱离 IIS6 经典模式。

第三代:成熟企业版(Win7 / Server 2008 R2,DLL 版本 6.1.7601.x,使用最广稳定版)

功能大幅扩容

  1. 原生支持域用户网页自助改密码,rdpwsx.dll 承载password.aspx后端 AD 密码修改逻辑(Server2008 原生缺失,2008R2 通过该 DLL 补齐)CSDN博...;
  2. 适配 RDP7.0 Aero 透明、H.264 视频重定向、USB 设备重定向,全部参数自动塞入导出的 rdp 配置;
  3. 对接rdpsign.exe,可配置 RDWeb 自动对下发的 rdp 文件做服务器侧签名,防止钓鱼篡改;
  4. 会话负载均衡:对接 RD Connection Broker,根据用户会话状态在 rdp 内写入目标会话主机地址,实现会话重连;
  5. 位图缓存、带宽体验等级自动配置到 rdp 文件。

关键安全补丁迭代(rdpwsx.dll 二进制更新)

  • MS12-020(2012.3,DLL 6.1.7601.17828):修复 rdpwsx.dll 请求畸形触发终端服务 DoS 拒绝服务漏洞,修复恶意构造网页请求导致 RDWeb 服务卡死问题Microsoft ...;
  • 累积月度补丁持续加固输入校验,防止路径遍历、参数注入篡改生成的 RDP 配置。

运行特征

64 位系统存在 WoW64 32 位 + 原生 64 位双 rdpwsx.dll,适配 IIS32/64 位应用池。

第四代:网络层升级(Server 2012 / 2012 R2,DLL 版本 6.2.9200.x)

适配RDP8.0/8.1 TCP+UDP 双通道架构,rdpwsx.dll 核心变更:
  1. 生成 rdp 时自动写入udptransport:i:1开启 UDP 流媒体通道、networkautodetect:i:1网络自适应;
  2. 支持受限管理员模式(RestrictedAdmin),可在 RDWeb 策略中开启,rdp 配置写入restrictedadminmode:i:1抵御 PtH 哈希传递攻击;
  3. 会话影子配套:支持管理员网页直接生成带/shadow参数的 RDP 链接;
  4. 强化证书校验:RDWeb 站点证书校验逻辑移入 rdpwsx.dll,拒绝自签名证书直接访问;
  5. 彻底禁用 IE6/7 老旧 ActiveX 控件兼容逻辑,仅保留文件下载模式;
  6. AD 多域、联合身份认证适配,跨域用户 RDWeb 单点登录。

第五代:云化加固(Server 2016 / 2019 / 2022,DLL 版本 10.0.x)

架构重大拆分(标志性变化)

  1. 传统 ISAPI 模式 rdpwsx.dll 逐步弱化:微软推出新一代 HTML5 RD Web 客户端(无插件浏览器网页 RDP),基于 JavaScript,不再依赖 rdpwsx.dll 生成 rdp 文件;
  2. rdpwsx.dll 仅保留传统 RDWeb(IE 兼容模式)兼容逻辑,用于老旧终端、瘦客户端导出 rdp 配置;

安全加固重点

  1. 强制输出的 RDP 文件启用 SHA256 签名,废弃 SHA1 签名;
  2. 默认在生成 rdp 时禁用磁盘、USB、剪贴板重定向(高危外设默认关闭),符合 Win11 RDP 防钓鱼策略;
  3. 对接 Remote Credential Guard 凭据守卫,rdp 写入凭据保护配置;
  4. 移除老旧 RC4 加密兼容代码,全站强制 TLS1.2+,rdpwsx.dll 拒绝 TLS1.0/1.1 握手;

业务适配

适配 Azure 虚拟桌面(AVD)混合部署,传统 RDWeb 门户作为兼容层对接本地 RDS 部署。

第六代:功能边缘化(Server 2025 / Win11 22H2+)

  1. rdpwsx.dll 进入弃用(Deprecated)状态:微软主推纯 HTML5 Web 客户端、UWP 远程桌面客户端、AVD 原生门户;
  2. 新部署不再安装「远程桌面 Web 访问(RDWeb)传统角色」,rdpwsx.dll 仅作为系统兼容组件保留,不再新增功能开发;
  3. 仅安全累积补丁修复高危漏洞,无功能性更新;
  4. IIS ISAPI 扩展在新版 IIS 中默认禁用,需手动开启 ISAPI 支持才能加载 rdpwsx.dll。

三、核心逻辑演进脉络(三大维度)

1. RDP 配置生成逻辑演进

  • 2003:硬编码 ASP 参数 → 2008:rdpwsx 集中参数组装 → 2012:网络 / 安全策略动态注入 → 2016:高危外设默认禁用 + 强签名 → 2022:仅兼容存量 rdp 导出。

2. 接入模式演进

IE ActiveX 内嵌 RDP → 网页下载 rdp+mstsc 本地启动(主流 15 年)→ HTML5 无插件 Web 客户端(脱离 rdpwsx.dll)。

3. 安全演进

明文 HTTP → SSL 加密 → NLA 前置认证 → RDP 文件自动签名 → 受限管理员 → 凭据守卫 → 外设默认隔离 → 老旧 TLS / 哈希算法淘汰。

四、rdpwsx.dll 配套依赖链(横向组件关系)

上游(IIS + 身份 + RDS 架构)

  1. w3wp.exe(IIS 工作进程):加载 rdpwsx.dll ISAPI 扩展;
  2. schannel.dll:IIS SSL/TLS 证书校验;
  3. adsldp32.dll:AD 域账号认证、密码修改接口;
  4. rdpcore.dll:RDS 核心会话信息查询(应用列表、会话地址);
  5. RD Gateway:HTTPS 隧道代理,rdpwsx 在 rdp 内自动填充网关地址。

下游(RDP 会话链路)

  1. 内存 / 磁盘输出标准.rdp INI 配置文件;
  2. 操作系统调用mstsc.exe [下载的rdp文件]
  3. mstsc 加载 mstscax.dll 完成 RDP 协议握手。

配套工具联动

  • rdpsign.exe:rdpwsx 可调用完成下发 RDP 自动签名;
  • cmdkey.exe:RDWeb 单点登录凭据写入系统凭据管理器;
  • 组策略:管控 RDWeb 行为、rdp 生成规则、签名强制开关。

五、经典故障与版本对应问题

  1. Server2008 RDWeb 无法改域密码
     
    原因:早期 6.0 版本 rdpwsx 无密码修改逻辑,升级到 2008R2 6.1 版 DLL 或部署独立密码修改页修复CSDN博...。
  2. RDWeb 下载 RDP 文件 UDP 不生效
     
    原因:2008R2 及更早 rdpwsx 不支持 UDP 字段,升级 Server2012+。
  3. MS12-020 之前 RDWeb 频繁卡死
     
    rdpwsx.dll 畸形请求 DoS 漏洞,安装对应补丁升级 6.1.7601.17828 及以上版本修复Microsoft ...。
  4. Win11 新服务器 RDWeb 打不开
     
    IIS 默认禁用 ISAPI 扩展,需手动开启 ISAPI 筛选器支持加载 rdpwsx.dll。

六、整体演进总结

  1. 功能生命周期:原型(2003)→产品化核心(2008/R2)→网络安全增强(2012/R2)→兼容存量(2016–2022)→弃用兼容组件(2025+);
  2. 核心价值固化:近 15 年企业 RDS 外网门户核心依靠 rdpwsx.dll 实现「网页门户→动态 RDP 配置→本地 mstsc 连接」标准化流程;
  3. 淘汰逻辑:HTML5 原生 Web RDP 消除了对 ISAPI 扩展、rdp 文件、本地 mstsc 的依赖,rdpwsx.dll 完成历史使命,仅用于老旧 RDS 环境利旧运维;
  4. 安全主线贯穿全迭代:从传输加密、认证前置、配置防篡改、凭据防护、外设隔离多层闭环,适配 RDP 全系列高危漏洞防护(BlueKeep、CredSSP 等)。

MSTSC + .RDP 完整配套链全解构

整体划分为五大配套子链条
  1. 客户端内核依赖链(EXE+COM+DLL + 内核驱动,运行底座)
  2. .rdp配置配套链(签名、凭据、模板、批量生成)
  3. 原生命令行运维配套工具链(会话管理、签名、凭据、影子)
  4. 策略与管控配套链(注册表、组策略、WMI、证书)
  5. 上层管理 / 集成配套(微软原生管理工具、PowerShell、Web 客户端、第三方运维集成)

一、客户端内核依赖配套链(MSTSC 运行必备依赖拓扑)

1.1 顶层入口层

  • mstsc.exe:GUI 外壳、参数解析、RDP 文件加载、窗口渲染调度
  • 启动分支:直接运行 / 加载.rdp / 命令行参数 / /edit编辑配置
     
    核心定位:只做 UI 调度,无 RDP 协议实现

1.2 核心协议 COM 主控(整条链路核心)

mstscax.dll(System32 核心 COM 组件,ProgID:MsRdpClient9
 
承载全部 RDP 协议逻辑:TCP/UDP 通道、TLS 握手、NLA/CredSSP 认证、虚拟通道、图形编码、外设重定向、会话重连、XPath 检索解析。
 
所有配套工具最终均对接此 COM 组件

1.3 安全加密配套依赖

  1. schannel.dll:TLS 1.2/1.3 链路加密、证书校验、RDP 握手加密
  2. credssp.dll:NLA 网络级别认证前置鉴权,阻断裸 TCP 连接攻击
  3. crypt32.dllcryptui.dll:证书解析、RDP 签名校验、凭据加解密

1.4 图形渲染配套组件

  1. rdpdd.dll:RDP 远端画面本地合成显示驱动
  2. mfplat.dllmf.dll:Media Foundation H.264/AVC 硬编解码(RemoteFX 视频流)
  3. dwmapi.dll:DWM 桌面合成、Aero 透明、HiDPI 高分缩放适配

1.5 虚拟通道外设重定向配套(设备映射全链路)

组件 进程 / 驱动形态 配套功能
rdpclip.exe 独立进程 CLIPRDR 剪贴板双向通道,崩溃可单独重启修复复制失效
rdpsnd.dll 用户态 DLL 音频播放下行重定向
rdpendp.dll 通道扩展 通用虚拟通道扩展底座
rdpdr.sys 内核驱动 磁盘、打印机、串口、智能卡底层虚拟化映射
usbredirector.dll 用户态 USB 设备直通重定向
cameraredirect.dll 用户态 摄像头视频重定向

1.6 网络底层配套

  • ws2_32.dll:TCP 套接字基础通信(3389 主通道)
  • msudp.dll:RDP8+ UDP 流媒体通道(4343/UDP,音视频弱网优化)
  • dnsapi.dll:域名解析

关键区分:客户端无服务依赖

TermService(termsrv.dll)仅为RDP 服务端组件,mstsc 客户端完全不需要启动该服务,纯用户态 COM 运行。

二、.RDP 配置文件专属配套链(配置生命周期全配套)

2.1 RDP 文件基础载体规则

.rdp = 标准 Windows INI 结构,格式:键:类型:值
  • :s: 字符串、:i: 整数开关、:b: Base64 二进制(废弃密码字段)
     
    配置优先级(从高到低):
     
    .rdp文件 > mstsc命令行参数 > 当前用户注册表默认配置 > 机器组策略强制配置

2.2 RDP 签名配套:rdpsign.exe(防篡改、防钓鱼核心工具)

路径:C:\Windows\System32\rdpsign.exe
 
核心配套能力:
  1. .rdp全文做 SHA256 哈希 + 代码证书签名,写入文件尾部隐藏签名段,不破坏 INI 明文结构
  2. 加载时 mstsc 自动校验哈希,篡改任意配置项直接告警拦截
  3. 批量签名、签名校验、证书指纹绑定
cmd
# 签名(指定证书指纹)
rdpsign /sha256 "证书指纹" server.rdp
# 校验签名合法性
rdpsign /verify server.rdp
# 批量文件夹签名
for %i in (*.rdp) do rdpsign /sha256 "指纹" "%i"
企业场景:组策略强制仅允许打开签名 RDP 文件,阻断恶意钓鱼 RDP 配置文件。

2.3 凭据配套:cmdkey.exe(RDP 凭据托管,替代明文密码写入 RDP)

早期 XP.rdp支持password 51:b:明文 Base64 密码,Vista 之后彻底废弃,凭据统一存入 Windows 凭据管理器。
 
cmdkey.exe配套实现预存凭据自动化连接:
cmd
# 预存储RDP服务器账号密码
cmdkey /add:192.168.1.100 /user:Administrator /pass:xxxx
# 查看已保存RDP凭据
cmdkey /list
# 删除失效凭据
cmdkey /delete:192.168.1.100
配套逻辑:mstsc 加载 RDP 时自动匹配凭据,免交互登录,杜绝 RDP 明文密码泄露。

2.4 RDP 模板批量生成配套

  1. 手动配置好连接 → mstsc「另存为」生成基准模板.rdp
  2. PowerShell/CMD 批量修改 IP、端口、管理员模式、外设开关,批量下发运维节点
  3. RemoteApp 专用 RDP 模板:内置remoteapplicationmode:i:1标记,实现单应用发布。

2.5 RDP 缓存配套(运行时持久化)

  1. 历史连接记录:HKCU\Software\Microsoft\Terminal Server Client\Default(MRU0~MRU9 历史地址)
  2. 位图缓存(带宽优化):%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache(bcache*.bmc 静态画面缓存)
  3. 会话日志:事件日志 → Microsoft\Windows\TerminalServices-ClientActiveXCore(连接、断连、认证错误审计)

三、原生终端服务命令行运维配套工具链(服务器侧会话运维,配合客户端使用)

全部属于Terminal Services原生工具集,用于远程服务器 RDP 会话运维、故障处置、会话接管Microsoft ...。
工具 核心配套场景 典型用法
qwinsta / query session 查询服务器全部 RDP 会话 ID、状态、用户名 query session /server:192.168.1.100
quser 精简用户会话查询 快速定位在线用户
tscon.exe 会话劫持 / 会话切换,断开会话接入控制台 tscon 2 /dest:console(僵死会话切到物理控制台)
tsdiscon.exe 断开会话(保留会话内存,可重连) tsdiscon 3 /server:目标主机
rwinsta.exe / reset session 强制销毁会话(释放内存资源) 清理卡死无响应会话
shadow.exe / mstsc /shadow RDP 会话影子监控、远程协助接管 mstsc /shadow:2 /v:IP /control 直接带教操作
tskill.exe 杀掉远程会话内进程 修复会话进程卡死
tsprof.exe 终端服务用户配置文件复制迁移 域用户 RDP 配置同步

影子会话配套联动逻辑

  1. 管理员用query session获取目标会话 ID
  2. 客户端mstsc /shadow:ID /v:服务器IP发起影子连接
  3. 组策略开启允许无提示影子控制实现运维接管。

四、策略与安全管控配套链(全局锁定 RDP 客户端行为)

4.1 组策略(gpedit.msc/gpmc.msc)管控配套路径

路径:计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面客户端
 
可管控全部.rdp配置项强制锁定:
  • 强制禁用磁盘 / USB / 剪贴板重定向(高危防泄密)
  • 强制启用 UDP 传输、强制 TLS1.2 加密
  • 强制校验 RDP 文件签名,拦截未签名 RDP 打开
  • 强制受限管理员模式(PtH 哈希传递防护)
  • 强制 NLA 认证开启

4.2 注册表强制配套(组策略未覆盖的精细化配置)

机器级强制配置路径:
 
HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client
 
用户级默认配置:
 
HKCU\Software\Microsoft\Terminal Server Client
 
可固化默认分辨率、默认关闭外设重定向、禁用历史连接记录。

4.3 RDP 证书配套(服务器侧链路加密加固)

  1. MMC 证书管理器导入 PFX 证书
  2. WMI 绑定证书指纹到 RDP 侦听器(Root\CimV2\TerminalServices命名空间Win32_TSGeneralSetting
  3. 组策略下发企业 CA 根证书,消除 RDP 自签名证书安全告警Microsoft ...。

4.4 防火墙配套

客户端出站:放行 3389/TCP、4343/UDP(RDP8+UDP 加速)
 
服务端入站:Windows 防火墙「远程桌面」预设规则放行端口。

五、上层集成与管理配套链(运维平台、批量管理、跨端扩展)

5.1 微软原生 RDP 集中管理工具:RDCMan(Remote Desktop Connection Manager)

定位:多节点 RDP 分组管理配套,直接调用 mstscax 内核:
  • 分组分类服务器、统一凭据、统一模板 RDP 配置
  • 批量连接、批量断开、全屏阵列运维,替代零散.rdp文件管理
  • 支持导出 / 导入 RDP 配置模板,企业运维标配工具。

5.2 PowerShell RDP 配套(自动化流水线)

  1. 直接调用MsRdpClient COM 组件编程化发起 RDP 连接
  2. 批量生成、签名、分发.rdp配置文件
  3. WMI 远程查询服务器 RDP 会话状态、批量下线僵死会话
  4. Intune/MDM 移动端推送签名 RDP 配置给终端设备。

5.3 Web 端 RDP 配套:RDWeb(远程桌面 Web 访问)

组件:rdpwsx.dll IIS 扩展,浏览器页面生成临时.rdp文件,一键下载打开 mstsc 连接 RemoteApp / 整桌面,用于外网门户发布远程应用。

5.4 跨平台客户端配套(同源协议兼容)

  • Windows UWP「远程桌面」(Microsoft Store):跨设备云同步 RDP 配置
  • macOS/iOS/Android 官方 RD 客户端:使用标准 RDP 协议,兼容 Windows 导出的.rdp配置文件
  • Linux Remmina、FreeRDP:开源 RDP 客户端,可导入.rdp配置文件对接协议。

5.5 第三方运维集成配套

  • mRemoteNG、MobaXterm、Devolutions RDM:整合 RDP+SSH+VNC,导入.rdp配置统一管理
  • RDP Wrapper:服务端解锁家庭版 RDP 多会话限制(配套 TermService 改造)。

六、全配套链端到端业务逻辑闭环(从配置到连接到运维)

  1. 配置制备:基准 RDP 模板 → rdpsign 签名加固 → cmdkey 预存凭据 → 批量下发终端
  2. 客户端启动:双击.rdp → mstsc 解析 INI 配置 → 合并注册表 / 策略配置 → 校验 RDP 签名完整性
  3. 内核初始化:实例化 mstscax.dll COM 组件 → schannel+credssp 完成 NLA 前置认证
  4. 链路协商:TCP 主通道 + UDP 辅助通道握手 → RDP 版本协商、虚拟通道(剪贴板 / 磁盘 / 音频)协商
  5. 会话运行:rdpdd 画面渲染 + 外设通道并行工作,位图缓存降低带宽
  6. 运维处置:服务端使用 qwinsta 查询会话 → tsdiscon 断开 /shadow 影子运维 → 异常会话 rwinsta 重置
  7. 安全管控:组策略全局锁定外设重定向、证书加密、RDP 签名校验闭环防钓鱼泄密。

七、配套链核心价值总结

  1. 模块化解耦:mstsc 仅做 UI,协议、加密、外设、会话各自配套组件独立,故障可单独修复(如重启 rdpclip 修复剪贴板);
  2. 安全纵深配套:RDP 文件签名 + 凭据托管 + NLA + 受限管理员 + 组策略多层防护,覆盖配置篡改、凭据泄露、协议攻击;
  3. 运维闭环:配置批量生成→集中管理→会话远程运维→日志审计整套原生工具链,适配个人运维、企业 VDI、云桌面场景;
  4. 兼容性统一:标准化.rdp配置可在全平台微软官方 RDP 客户端、开源 RDP 工具通用导入,协议互通。
 

RDP(远程桌面协议)相关的常见事件 ID 汇总,以及它们通常表示的含义。这些事件 ID 主要来自 Windows 事件查看器中的 Security、System 和 Application 日志。

Security 日志:

  • 4624: 账户成功登录。 这个事件表明一个账户已经成功登录到系统。 对于 RDP 来说,这意味着有人通过远程桌面成功连接到你的计算机。
    • 登录类型 (Logon Type) = 10: 表示通过远程桌面服务登录。
  • 4625: 账户登录失败。 这个事件表明一个账户尝试登录系统失败。 对于 RDP 来说,这意味着有人尝试通过远程桌面连接到你的计算机,但登录失败。
    • 登录类型 (Logon Type) = 10: 表示尝试通过远程桌面服务登录。
  • 4634: 账户已注销。 这个事件表明一个账户已经从系统中注销。 对于 RDP 来说,这意味着一个远程桌面会话已经结束。
    • 登录类型 (Logon Type) = 10: 表示通过远程桌面服务注销。
  • 4776: 域控制器尝试验证账户凭据。 此事件通常与 Kerberos 身份验证相关,可能表明远程桌面连接正在使用 Kerberos 进行身份验证。
  • 4648: 使用显式凭据启动登录尝试。 这可能表明使用了保存的凭据或 CredSSP 进行 RDP 连接。

System 日志:

  • 7036: 服务已进入运行状态。 如果 Remote Desktop Services 服务启动,会记录此事件。
  • 7035: 服务已进入停止状态。 如果 Remote Desktop Services 服务停止,会记录此事件。

Application 日志 (Microsoft-Windows-TerminalServices-LocalSessionManager/Operational):

  • 21: 远程桌面服务:用户已成功登录。 提供比 4624 更详细的 RDP 登录信息。
  • 22: 远程桌面服务:会话已重新连接。 用户重新连接到现有的远程桌面会话。
  • 23: 远程桌面服务:用户已注销会话。 用户已从远程桌面会话注销。
  • 24: 远程桌面服务:会话已断开连接。 远程桌面会话已断开连接,但用户可能仍然登录。
  • 25: 远程桌面服务:创建会话。 一个新的远程桌面会话已创建。
  • 39: 远程桌面服务:会话被限制。 由于资源限制,会话被限制。
  • 40: 远程桌面服务:会话已达到最大连接时间。 会话已达到允许的最大连接时间。

Application 日志 (Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational):

  • 1149: 远程桌面服务:RDP 监听器正在等待连接。 表明 RDP 服务正在运行并准备好接受连接。

Application 日志 (Microsoft-Windows-TerminalServices-SessionBroker/Operational):

  • 这些事件与远程桌面会话经纪人相关,通常在远程桌面服务部署中使用。 它们可以提供有关会话连接、重定向和负载平衡的信息。 具体的事件 ID 取决于配置。

使用 PowerShell 查询事件日志示例:

# 查询 Security 日志中的 RDP 登录成功事件
Get-WinEvent -LogName Security -FilterXPath "//Event[System[EventID=4624 and EventData[Data[@Name='LogonType']=10]]]"

# 查询 Security 日志中的 RDP 登录失败事件
Get-WinEvent -LogName Security -FilterXPath "//Event[System[EventID=4625 and EventData[Data[@Name='LogonType']=10]]]"

# 查询 Application 日志中的远程桌面服务事件 (需要指定正确的日志名称)
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -FilterXPath "//Event[System[EventID=21 or EventID=22 or EventID=23 or EventID=24 or EventID=25]]"

解释:

  • Get-WinEvent 是用于查询 Windows 事件日志的 PowerShell 命令。
  • -LogName 指定要查询的日志名称。
  • -FilterXPath 使用 XPath 表达式来过滤事件。
  • EventID 指定要查找的事件 ID。
  • EventData[Data[@Name='LogonType']=10] 用于过滤登录类型为 10 (远程桌面服务) 的事件。

重要提示:

  • 日志格式: 不同版本的 Windows 和不同的配置可能会导致日志格式略有不同。 你需要根据你的实际情况调整查询语句。
  • 事件日志位置: 事件日志的位置可能会因系统配置而异。
  • 权限: 你需要具有足够的权限才能查询事件日志。
  • 事件查看器: 可以使用 Windows 事件查看器 (eventvwr.msc) 来浏览和分析事件日志。

建议:

  • 集中日志管理: 考虑使用集中日志管理解决方案 (例如 Splunk, ELK Stack, Graylog) 来收集、存储和分析来自多台计算机的事件日志。
  • 安全监控: 配置安全监控工具来检测和响应可疑的 RDP 活动,例如暴力破解攻击、异常登录模式等。
  • 定期审查: 定期审查 RDP 相关的事件日志,以识别潜在的安全问题。

通过监控这些事件 ID,你可以更好地了解谁在连接到你的系统,以及他们是否成功登录。 这对于安全审计和故障排除非常有用。


在 PowerShell 中实现记录远程桌面(RDP)会话数据可以通过以下步骤来实现。这些步骤涵盖了如何捕获会话连接和断开事件,并将相关信息记录到文件中。

1. 监听远程桌面会话事件

首先,我们需要监听远程桌面会话连接和断开的事件。这可以通过注册 Windows 事件日志中的事件提供程序来实现。

powershellCopy Code
# 创建事件订阅
$sessionEvent = @"
<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TerminalServices-LocalSessionManager/Operational">
    <Select Path="Microsoft-Windows-TerminalServices-LocalSessionManager/Operational">
      *[System[Provider[@Name='Microsoft-Windows-TerminalServices-LocalSessionManager'] and (EventID=21 or EventID=24)]]
    </Select>
  </Query>
</QueryList>
"@

# 注册事件订阅
Register-WinEvent -Query $sessionEvent -SourceIdentifier "RDPSessionEvents" -Action {
    $event = $event.Message
    # 提取有用信息并记录到文件或其他位置
    Add-Content -Path "RDP_Session_Log.txt" -Value $event
}

2. 记录事件信息

在注册事件订阅后,任何远程桌面会话连接(EventID=21)或断开(EventID=24)事件发生时,都会触发指定的动作。上面的脚本将事件信息提取并追加到 RDP_Session_Log.txt 文件中。

3. 开始监听事件

运行上面的 PowerShell 脚本,它将开始监听本地会话管理器事件日志中的 RDP 会话事件。当用户连接或断开 RDP 会话时,相关信息将被记录到指定的文本文件中。

注意事项

  • 确保以管理员身份运行 PowerShell 脚本,以便注册事件订阅。
  • 事件日志路径和事件 ID 可能会因 Windows 版本而异,需要根据实际情况进行调整。
  • 可以根据需要修改记录的信息内容,以适应特定的需求和环境。

这种方法允许你捕获和记录远程桌面会话的连接和断开事件,为追踪和监视 RDP 使用提供了一种简单而有效的方式。


4. 完善记录的信息

在记录事件时,可以通过解析事件对象的详细属性来获得更多有用的信息,例如远程桌面会话的用户、计算机名、时间戳等。下面是如何进一步完善记录的信息:

powershellCopy Code
# 注册事件订阅
Register-WinEvent -Query $sessionEvent -SourceIdentifier "RDPSessionEvents" -Action {
    $event = $event.Message | ConvertFrom-Json
    $sessionId = $event.SessionId
    $userName = $event.User
    $computerName = $event.ComputerName
    $eventTime = $event.TimeCreated
    $eventType = switch ($event.EventID) {
        21 { "Session Connected" }
        24 { "Session Disconnected" }
        default { "Unknown" }
    }

    $logEntry = "$eventTime - $eventType - User: $userName, Session ID: $sessionId, Computer: $computerName"
    Add-Content -Path "RDP_Session_Log.txt" -Value $logEntry
}

解释说明:

  • $event.Message 可能是 JSON 格式的字符串,包含有关事件的详细信息。
  • ConvertFrom-Json 将 JSON 字符串转换为 PowerShell 对象,使得我们可以轻松地访问其中的属性。
  • 提取的属性包括 SessionId(会话ID)、User(用户)、ComputerName(计算机名)、TimeCreated(事件发生时间)等。
  • 使用 switch 语句根据事件ID(EventID)来确定事件类型,从而记录相应的事件描述。

5. 启动和停止监听事件

要开始监听事件,运行注册事件订阅的 PowerShell 脚本。脚本会持续运行,等待事件发生。

要停止监听事件,可以使用以下命令:

powershellCopy Code
Unregister-Event -SourceIdentifier "RDPSessionEvents"

这将取消注册之前的事件订阅,停止记录远程桌面会话事件。

注意事项:

  • 确保你有足够的权限来注册和取消注册事件订阅,通常需要管理员权限。
  • 可以根据实际需求调整日志文件的存储路径和格式化方式。
  • 建议在测试和生产环境之前先测试脚本,以确保它能正常运行并记录预期的信息。

通过这些步骤,你可以有效地利用 PowerShell 监听和记录远程桌面会话的连接和断开事件,为系统管理和监控提供有用的数据。


使用 PowerShell 脚本自动化实时监测日志文件,查询远程桌面(RDP)相关事件(包括尝试登录、登录成功、退出等)的示例脚本。

脚本功能:

  • 实时监测: 脚本会持续监测指定的日志文件,当有新行写入时,会立即进行分析。
  • 关键词搜索: 脚本会搜索包含特定关键词(例如 "RDP", "远程桌面", "登录成功", "登录失败", "退出" 等)的日志条目。
  • 事件提取: 脚本会尝试提取关键信息,例如时间戳、用户名、来源 IP 地址等。
  • 结果输出: 脚本会将匹配的日志条目和提取的信息输出到控制台,也可以选择输出到文件。
  • 远程桌面事件过滤: 脚本专门针对远程桌面相关的事件进行过滤和分析。

脚本代码:

# 脚本参数
$LogFilePath = "C:\Path\To\Your\LogFile.log"  # 替换为你的日志文件路径
$Keywords = @("RDP", "远程桌面", "登录成功", "登录失败", "退出", "Remote Desktop Services") # 关键词列表
$OutputFile = "C:\Path\To\Output\RDP_Events.log" # 可选:输出文件路径,如果不需要输出到文件,留空即可

# 函数:提取远程桌面事件信息
function Extract-RDPEvents {
    param (
        [string]$LogEntry
    )

    # 提取时间戳
    $Timestamp = (Get-Date).ToString() # 如果日志本身不包含时间戳,则使用当前时间

    # 提取用户名 (根据日志格式调整)
    $Username = $null
    if ($LogEntry -match "用户: (.*?) ") {
        $Username = $Matches[1]
    } elseif ($LogEntry -match "Username: (.*?)") {
        $Username = $Matches[1]
    }

    # 提取来源 IP 地址 (根据日志格式调整)
    $SourceIP = $null
    if ($LogEntry -match "来源 IP 地址: (.*?) ") {
        $SourceIP = $Matches[1]
    } elseif ($LogEntry -match "Source Network Address: (.*?)") {
        $SourceIP = $Matches[1]
    }

    # 判断事件类型 (登录成功、登录失败、退出等)
    $EventType = "Unknown"
    if ($LogEntry -match "登录成功") {
        $EventType = "Login Success"
    } elseif ($LogEntry -match "登录失败") {
        $EventType = "Login Failed"
    } elseif ($LogEntry -match "退出") {
        $EventType = "Logout"
    }

    # 创建一个哈希表来存储提取的信息
    $EventData = @{
        Timestamp = $Timestamp
        EventType = $EventType
        Username  = $Username
        SourceIP  = $SourceIP
        LogEntry  = $LogEntry
    }

    return $EventData
}

# 注册事件,实时监测日志文件
Register-ObjectEvent -InputObject (Get-Content -Path $LogFilePath -Wait) -EventName DataAdded -SourceIdentifier LogMonitor -Action {
    $NewEntry = $Event.SourceEventArgs.Line

    # 检查日志条目是否包含任何关键词
    if ($Keywords | Where-Object { $NewEntry -like "*$_*" }) {
        # 提取远程桌面事件信息
        $EventData = Extract-RDPEvents -LogEntry $NewEntry

        # 输出到控制台
        Write-Host "--------------------------------------------------"
        Write-Host "时间戳: $($EventData.Timestamp)"
        Write-Host "事件类型: $($EventData.EventType)"
        Write-Host "用户名: $($EventData.Username)"
        Write-Host "来源 IP 地址: $($EventData.SourceIP)"
        Write-Host "原始日志: $($EventData.LogEntry)"

        # 输出到文件 (如果指定了输出文件路径)
        if ($OutputFile) {
            $EventData | ConvertTo-Json | Out-File -FilePath $OutputFile -Append
        }
    }
}

Write-Host "脚本正在运行,实时监测日志文件: $LogFilePath"
Write-Host "按 Ctrl+C 停止脚本"

# 保持脚本运行,直到手动停止
while ($true) {
    Start-Sleep -Seconds 1
}

# 取消事件注册 (如果脚本被停止)
Unregister-Event -SourceIdentifier LogMonitor

使用方法:

  1. 修改参数:
    • 将 $LogFilePath 替换为你要监测的日志文件的实际路径。
    • 根据需要修改 $Keywords 数组,添加或删除关键词。
    • 如果需要将结果输出到文件,请设置 $OutputFile 变量。 如果不需要,将其留空。
  2. 保存脚本: 将代码保存为 .ps1 文件(例如 Monitor-RDP-Logs.ps1)。
  3. 运行脚本:
    • 以管理员身份打开 PowerShell。
    • 导航到脚本所在的目录。
    • 运行脚本:.\Monitor-RDP-Logs.ps1
  4. 停止脚本: 按 Ctrl+C 停止脚本。

脚本解释:

  • $LogFilePath: 指定要监测的日志文件的路径。
  • $Keywords: 包含要搜索的关键词的数组。
  • $OutputFile: 指定输出文件的路径(可选)。
  • Extract-RDPEvents 函数: 这个函数负责从日志条目中提取关键信息,例如时间戳、用户名、来源 IP 地址和事件类型。 你需要根据你的日志文件的格式来调整这个函数。
  • Register-ObjectEvent: 这个命令注册一个事件,当日志文件有新行写入时,会触发相应的操作。
    • Get-Content -Path $LogFilePath -Wait 会持续监测日志文件,当有新内容添加到文件末尾时,会触发 DataAdded 事件。
    • -Action 指定当事件发生时要执行的代码块。
  • $Event.SourceEventArgs.Line: 这个变量包含新添加的日志条目。
  • Where-Object { $NewEntry -like "*$_*" }: 这个命令会检查日志条目是否包含任何关键词。
  • Write-Host: 将结果输出到控制台。
  • ConvertTo-Json | Out-File: 将结果转换为 JSON 格式并输出到文件(如果指定了输出文件路径)。
  • Unregister-Event: 取消事件注册,在脚本停止时清理资源。

重要注意事项:

  • 日志文件格式: 此脚本假设你的日志文件是文本文件,并且每行包含一个日志条目。 你需要根据你的日志文件的实际格式来调整脚本。
  • 事件提取: Extract-RDPEvents 函数需要根据你的日志文件的格式进行调整,才能正确提取信息。 你需要仔细分析你的日志文件,找到包含时间戳、用户名、来源 IP 地址等信息的模式,并修改正则表达式来匹配这些模式。
  • 权限: 运行此脚本需要读取日志文件的权限。 确保你以具有足够权限的用户身份运行 PowerShell。
  • 性能: 如果日志文件非常大,或者写入速度非常快,此脚本可能会消耗大量的 CPU 资源。 你可以考虑使用更高效的日志分析工具,例如 Splunk、ELK Stack 等。
  • 安全性: 如果日志文件包含敏感信息(例如密码),请确保采取适当的安全措施来保护日志文件。
  • 错误处理: 此脚本没有包含完整的错误处理。 你可以添加错误处理代码来处理可能发生的异常,例如文件不存在、权限不足等。

改进方向:

  • 更灵活的关键词配置: 可以将关键词存储在配置文件中,方便修改。
  • 更丰富的事件类型: 可以添加更多的事件类型,例如会话连接、会话断开等。
  • 更详细的事件信息: 可以提取更多的事件信息,例如客户端版本、操作系统版本等。
  • 报警功能: 可以添加报警功能,当检测到特定事件时,发送邮件或短信通知。
  • 集成到监控系统: 可以将此脚本集成到现有的监控系统中,例如 Zabbix、Nagios 等。

这个脚本提供了一个基本的框架,你可以根据你的实际需求进行修改和扩展。 希望这个脚本能帮助你实时监测远程桌面相关的日志事件!


 

posted @ 2024-07-16 08:42  suv789  阅读(767)  评论(0)    收藏  举报