Mapeamento de metadados
O conteúdo de um documento de metadados é mapeado para a API de metadados das maneiras explicadas nas seções a seguir.
Os seguintes prefixos de namespace são usados em toda esta documentação:
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
As seções subsequentes descrevem constructos de API juntamente com quais construções de metadados (WSDL ou Policy) correspondem.
A familiaridade com especificações de metadados, como WSDL e Policy, ajudará a entender esta seção.
Endereço do ponto de extremidade
O endereço de um ponto de extremidade (consulte WS_ENDPOINT_ADDRESS) é obtido de um elemento de extensibilidade dentro do elemento wsdl:port do documento WSDL. Há suporte para os seguintes elementos de extensibilidade para especificar o endereço:
<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
A associação de canal (consulte WS_CHANNEL_BINDING) é determinada pelo transporte da associação soap usada, da seguinte maneira:
<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
A versão do envelope (consulte WS_CHANNEL_PROPERTY_ENVELOPE_VERSION) é determinada pela qual a associação soap é usada, da seguinte maneira:
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
Endereçando a versão
A versão de endereçamento (consulte WS_CHANNEL_PROPERTY_ADDRESSING_VERSION) é determinada pelas seguintes declarações na política de ponto de extremidade:
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
Se uma asserção de endereçamento não estiver presente, WS_ADDRESSING_VERSION_TRANSPORT será assumida.
Decodificador de mensagens
A codificação da mensagem (consulte WS_CHANNEL_PROPERTY_ENCODING) é determinada pelas seguintes declarações na política de ponto de extremidade:
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
Observe que a declaração de política de codificação binária não inclui informações sobre se a codificação binária é sem sessão ou sem sessão. Isso é determinado pela restrição de propriedade de codificação (que deve ser apropriada de acordo com se a WS_CHANNEL_TYPE que está sendo usada é sessão ou não).
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
Se nenhuma das declarações acima estiver presente, uma codificação de texto será usada: WS_ENCODING_XML_UTF8, WS_ENCODING_XML_UTF16LEWS_ENCODING_XML_UTF16BE.
Observe que a política não inclui informações sobre o conjunto de caracteres para MTOM ou codificações de texto (seja UTF8, UTF16LE ou UTF16BE). O valor real do conjunto de caracteres usado é determinado pela restrição de propriedade de codificação.
Restrições com autenticação de cabeçalho HTTP
Esta seção se aplica quando a restrição de associação de segurança WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT é especificada.
Essa associação de segurança é indicada na política por declarações diferentes que declaram que a autenticação de cabeçalho HTTP deve ser usada e que um esquema de autenticação específico deve ser usado. As declarações de política correspondem aos valores do WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME da seguinte maneira:
<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>
Restrições com segurança de transporte de SLL
Esta seção se aplica quando a restrição de associação de segurança WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Restrições com segurança de transporte SSPI
Esta seção se aplica quando a restrição de associação de segurança WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Restrições com segurança de transporte
A restrição de propriedade WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL poderá ser especificada se qualquer uma das restrições de associação de segurança for especificada:
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
O valor da política é sempre WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT.
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
O valor da política é especificado como parte da declaração WindowsTransportSecurity, da seguinte maneira:
<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
O valor da política é sempre WS_PROTECTION_LEVEL_NONE.
Restrições com associação de segurança do Kerberos APREQ
Esta seção se aplica quando a restrição de associação de segurança WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Restrições com associação de segurança de mensagem
Esta seção se aplica quando a restrição de associação de segurança WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta seção se aplica quando a restrição de associação de segurança WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta seção se aplica quando a restrição de associação de segurança WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<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>
O seguinte descreve o mapeamento de campos do WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT para a política acima:
O campo claimConstraints é usado para verificar o conjunto de URIs do tipo de declaração que aparecem dentro do elemento wsi:ClaimType acima.
O campo issuerAddress corresponde ao elemento wsp:Issuer acima, que é o WS_ENDPOINT_ADDRESS do serviço que pode emitir o token.
O campo requestSecurityTokenTemplate corresponde aos elementos filho do elemento wsp:RequestSecurityTokenTemplate.
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta seção se aplica quando a restrição de associação de segurança WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As seguintes declarações de política são usadas neste caso:
<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>
O modo de entropia é determinado pela asserção <sp:Trust10> . <sp:RequireClientEntropy/> e <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
Esta seção se aplica quando a restrição de associação de segurança WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT é especificada. As declarações de política a seguir são usadas para identificar o WS_TRUST_VERSION e as opções associadas.
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
A versão de confiança pode ser especificada usando o WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT com uma ID de propriedade de WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION.
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION
Esta seção se aplica quando qualquer uma das seguintes restrições de associação são usadas:
- 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
A versão de segurança do cabeçalho (conforme especificado por WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION) é determinada por uma das seguintes declarações de política:
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
Restrições com layout de segurança de cabeçalho
Esta seção se aplica quando qualquer uma das seguintes restrições de associação são usadas:
- 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
O layout do cabeçalho de segurança (conforme especificado por WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT) é determinado por uma das seguintes declarações de política:
<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>
Restrições com a segurança do carimbo de data/hora
Esta seção se aplica quando qualquer uma das seguintes restrições de associação são usadas:
- 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
Se um carimbo de data/hora está ou não incluído no cabeçalho de segurança (conforme especificado por WS_SECURITY_PROPERTY_TIMESTAMP_USAGE) é determinado pela presença do sp:IncludeTimestamp no seguinte local:
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
Se a asserção sp:IncludeTimestamp estiver presente, o valor da política será WS_SECURITY_TIMESTAMP_USAGE_ALWAYS.
Se a asserção sp:IncludeTimestamp não estiver presente, o valor da política será WS_SECURITY_TIMESTAMP_USAGE_NEVER.