元数据映射
元数据文档的内容按照以下部分所述的方式映射到元数据 API。
本文档使用以下命名空间前缀:
wsdl => http://schemas.xmlsoap.org/wsdl/
soap11 => http://schemas.xmlsoap.org/wsdl/soap/
soap12 => http://schemas.xmlsoap.org/wsdl/soap12/
wsa09 => http://schemas.xmlsoap.org/ws/2004/08/addressing
wsa10 => http://www.w3.org/2005/08/addressing
wsa09p => http://schemas.xmlsoap.org/ws/2004/08/addressing/policy
wsa10p => http://www.w3.org/2006/05/addressing/wsdl
binp => http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1
mtomp => http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization
sp => http://schemas.xmlsoap.org/ws/2005/07/securitypolicy
wsp => http://schemas.xmlsoap.org/ws/2004/09/policy
netf => http://schemas.microsoft.com/ws/2006/05/framing/policy
httpp => http://schemas.microsoft.com/ws/06/2004/policy/http
wst10 => http://schemas.xmlsoap.org/ws/2005/02/trust
wsi => http://schemas.xmlsoap.org/ws/2005/05/identity
后续部分介绍 API 构造以及元数据构造 (WSDL 或策略) 它们所对应的内容。
熟悉元数据规范(如 WSDL 和策略)将有助于了解本部分。
终结点地址
终结点的地址 (请参阅 WS_ENDPOINT_ADDRESS) 是从 WSDL 文档的 wsdl:port 元素中的扩展性元素获取的。 支持以下扩展性元素来指定地址:
<wsdl:port...>
<soap11:address.../>
</wsdl:port>
<wsdl:port...>
<soap12:address.../>
</wsdl:port>
<wsdl:port...>
<wsa09:EndpointReference.../>
</wsdl:port>
<wsdl:port...>
<wsa10:EndpointReference.../>
</wsdl:port>
WS_CHANNEL_BINDING
通道绑定 (请参阅 WS_CHANNEL_BINDING) 由使用的 soap 绑定的传输确定,如下所示:
<soap:binding transport="http://schemas.microsoft.com/soap/tcp"/> => WS_TCP_CHANNEL_BINDING
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> => WS_HTTP_CHANNEL_BINDING
WS_CHANNEL_PROPERTY_ENVELOPE_VERSION
信封版本 (请参阅 WS_CHANNEL_PROPERTY_ENVELOPE_VERSION) 由使用哪个 soap 绑定决定,如下所示:
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
寻址版本
寻址版本 (请参阅 WS_CHANNEL_PROPERTY_ADDRESSING_VERSION) 由终结点策略中的以下断言确定:
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
如果不存在寻址断言,则假定 WS_ADDRESSING_VERSION_TRANSPORT 。
消息编码
(WS_CHANNEL_PROPERTY_ENCODING) 的消息编码由终结点策略中的以下断言确定:
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
请注意,二进制编码策略断言不包括有关二进制编码是会话编码还是无会话的信息。 这由编码属性约束 (根据所使用的 WS_CHANNEL_TYPE 是否为会话) 确定。
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
如果上述两个断言都不存在,则使用文本编码: WS_ENCODING_XML_UTF8、 WS_ENCODING_XML_UTF16LEWS_ENCODING_XML_UTF16BE。
请注意,策略不包含有关 MTOM 字符集或文本编码的信息, (它是 UTF8、UTF16LE 还是 UTF16BE) 。 使用的实际字符集值由编码属性约束确定。
HTTP 标头身份验证的约束
当指定 WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。
此安全绑定在策略中由不同的断言指示,声明应使用 HTTP 标头身份验证和应使用特定身份验证方案。 策略断言对应于 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME 的值,如下所示:
<wsp:Policy...>
<httpp:BasicAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_BASIC
</wsp:Policy>
<wsp:Policy...>
<httpp:NegotiateAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE
</wsp:Policy>
<wsp:Policy...>
<httpp:NtlmAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_NTLM
</wsp:Policy>
<wsp:Policy...>
<httpp:DigestAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_DIGEST
</wsp:Policy>
SLL 传输安全性的约束
当指定 WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
SSPI 传输安全性的约束
指定 WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
传输安全性的约束
如果指定了任何安全绑定约束,则可以指定 WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL 属性约束:
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
策略中的值始终 WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT。
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
策略中的值指定为 WindowsTransportSecurity 断言的一部分,如下所示:
<netf:WindowsTransportSecurity...>None</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_NONE
<netf:WindowsTransportSecurity...>Sign</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_SIGN
<netf:WindowsTransportSecurity...>EncryptAndSign</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT
WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT
策略中的值始终 WS_PROTECTION_LEVEL_NONE。
Kerberos APREQ 安全绑定的约束
指定 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
消息安全绑定的约束
指定 WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
当指定 WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
当指定 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken="xs:anyURI"? ...="" >
<wsp:Issuer>...</wsp:Issuer>?
<wsp:RequestSecurityTokenTemplate TrustVersion='xs:anyURI"?>
...
<wst10:Claims>
<wsi:ClaimType Optional='xs:boolean'?>xs:anyURI<wt:ClaimType>*
</wst10:Claims>
...
</wsp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys/> ?
<sp:RequireExternalReference/> ?
<sp:RequireInternalReference/> ?
</wsp:Policy> ?
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
下面介绍了 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 字段与上述策略的映射:
claimConstraints 字段用于验证上述 wsi:ClaimType 元素中显示的声明类型 URI 集。
issuerAddress 字段对应于上面的 wsp:Issuer 元素,该元素是可以颁发令牌的服务 WS_ENDPOINT_ADDRESS 。
requestSecurityTokenTemplate 字段对应于 wsp:RequestSecurityTokenTemplate 元素的子元素。
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
当指定 WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 本例使用以下策略断言:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:SecureConversationToken sp:IncludeToken="xs:anyURI"? ...="" >
<wsp:Issuer>...</wsp:Issuer>?
<wsp:Policy>
<sp:RequireDerivedKeys.../>?
<sp:RequireExternalUriReference.../>?
<sp:SC10SecurityContextToken.../>? => WS_SECURE_CONVERSATION_VERSION_FEBRUARY_2005
<sp:BootstrapPolicy... >?
<wsp:Policy> ... </wsp:Policy> => WS_SECURITY_CONSTRAINTS
</sp:BootstrapPolicy>
</wsp:Policy>
</wsp:SecureConversationToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
熵模式由 <sp:Trust10> 断言确定。 <sp:RequireClientEntropy/> 和 <sp:RequireServerEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_COMBINED<sp:RequireClientEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_CLIENT_ONLY<sp:RequireServerEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_SERVER_ONLY
WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION
当指定 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 安全绑定约束时,本部分适用。 以下策略断言用于标识 WS_TRUST_VERSION 和关联的选项。
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
可以使用属性 ID 为 WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION 的WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT指定信任版本。
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION
当使用以下任何绑定约束时,本部分适用:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION) 指定的标头安全 版本 (由 以下策略断言之一确定:
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
标头安全布局的约束
当使用以下任何绑定约束时,本部分适用:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT) 指定的安全标头布局 ( 由以下策略断言之一确定:
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:Lax.../> => WS_SECURITY_HEADER_LAYOUT_LAX
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:Strict.../> => WS_SECURITY_HEADER_LAYOUT_STRICT
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:LaxTsFirst.../> => WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_FIRST
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:LaxTsLast.../> => WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_LAST
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
时间戳安全性的约束
当使用以下任何绑定约束时,本部分适用:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
时间戳是否包含在由 WS_SECURITY_PROPERTY_TIMESTAMP_USAGE 指定的安全标头 () 取决于 sp:IncludeTimestamp 在以下位置的存在:
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
如果 sp:IncludeTimestamp 断言存在,则策略中的值 WS_SECURITY_TIMESTAMP_USAGE_ALWAYS。
如果 sp:IncludeTimestamp 断言不存在,则策略中的值 WS_SECURITY_TIMESTAMP_USAGE_NEVER。