扩展保护
扩展保护是一种将外部安全通道(如 SSL)绑定到内部通道身份验证协议(如 Kerberos-APREQ 和 HTTP 标头身份验证)的机制。
RFC2743 中定义了扩展保护的概念。
扩展保护(如果可用)会在客户端上自动配置,但对于非默认方案,可能需要在服务器上进行配置。
支持的配置
使用 windows 集成身份验证协议(如WS_HTTP_HEADER_AUTH_SECURITY_BINDING 和 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING)将WS_HTTP_CHANNEL_BINDING与安全绑定配合使用时,支持扩展保护。 它通过以下 安全属性进行配置:
- WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_POLICY
- WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_SCENARIO
- WS_SECURITY_PROPERTY_SERVICE_IDENTITIES
可以采用以下涉及扩展保护的配置:
客户端
- WS_SSL_TRANSPORT_SECURITY_BINDING 与 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 或 WS_HTTP_HEADER_AUTH_SECURITY_BINDING 一起使用。 在此配置中,身份验证绑定通过从 SSL 连接自动提取的扩展保护令牌绑定到 SSL 连接。
- 不使用 SSL,设置 WS_HTTP_HEADER_AUTH_SECURITY_BINDING 。 身份验证绑定通过服务器主体名称 (SPN) 进行绑定,这是从WS_ENDPOINT_ADDRESS自动确定 的。
服务器
- WS_SSL_TRANSPORT_SECURITY_BINDING 与 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 或 WS_HTTP_HEADER_AUTH_SECURITY_BINDING 一起使用。 在此配置中,身份验证绑定通过从 SSL 连接中提取并自动验证的扩展保护令牌绑定到 SSL 连接。
- 不使用 SSL,设置 WS_HTTP_HEADER_AUTH_SECURITY_BINDING 。 身份验证绑定通过服务器主体名称 (SPN) 绑定,必须通过 WS_SECURITY_PROPERTY_SERVICE_IDENTITIES 提供。 收到消息时,将提取并验证 SPN 是否与所提供的服务名称完全匹配。 不提供 SPN 等效于设置 WS_EXTENDED_PROTECTION_POLICY_NEVER。
- 不使用 SSL, 指定WS_EXTENDED_PROTECTION_SCENARIO_BOUND_SERVER 并使用 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 。 在此配置中,不得设置 WS_SECURITY_PROPERTY_SERVICE_IDENTITIES 。 除了作为 Kerberos 协议的一部分执行的操作之外,不会执行 SPN 检查。
- 指定WS_EXTENDED_PROTECTION_SCENARIO_TERMINATED_SSL ,并使用 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 或 WS_HTTP_HEADER_AUTH_SECURITY_BINDING 。 必须设置WS_SECURITY_PROPERTY_SERVICE_IDENTITIES。
支持的平台
在操作系统中支持扩展保护的平台上支持扩展保护。 Windows 7 和 Windows Server 2008 R2 提供内置支持。 其他平台可能需要更新。
如果服务器的操作系统不提供此类支持,则客户端发送的任何扩展保护信息将被忽略。 因此,使用扩展保护的客户端可以与此类服务器通信,但安全优势会丢失。 在客户端上, WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 与 WS_SSL_TRANSPORT_SECURITY_BINDING 仅支持 Vista 及更高版本的扩展保护。
注意:不可用的扩展保护不会阻止使用任何特定配置。
互操作性
默认配置的服务器可以与 SOAP 客户端通信,无论它们是否使用扩展保护。 一个例外是 Windows XP 和 Windows Server 2003 WWSAPI 客户端,它们已更新以支持扩展保护并使用 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 和 WS_SSL_TRANSPORT_SECURITY_BINDING。 若要支持此类客户端 WS_EXTENDED_PROTECTION_POLICY_NEVER 必须由服务器指定。 配置 了 WS_EXTENDED_PROTECTION_POLICY_ALWAYS 的服务器将拒绝来自不使用扩展保护的客户端的通信。 在客户端上, WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING 与 WS_SSL_TRANSPORT_SECURITY_BINDING 结合使用将导致使用 Vista 和更高版本上的 HTTP 分块传输编码发送消息。 这可能会导致不支持分块传输的服务器出现互操作问题。
以下枚举/常量是扩展保护的一部分:
以下结构是扩展保护的一部分:
反馈
https://aka.ms/ContentUserFeedback。
即将推出:在整个 2024 年,我们将逐步取消以“GitHub 问题”作为内容的反馈机制,并将其替换为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈