扩展保护
扩展保护是将外部安全通道(如 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 是否与所提供的服务名称完全匹配。 不提供 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 分块传输编码发送消息。 这可能会导致不支持分块传输的服务器出现互操作问题。
以下枚举/常量是扩展保护的一部分:
以下结构是扩展保护的一部分: