Asignación de metadatos
El contenido de un documento de metadatos se asigna a la API de metadatos de las maneras que se explican en las secciones siguientes.
En esta documentación se usan los siguientes prefijos de espacio de nombres:
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
En las secciones siguientes se describen las construcciones de API junto con las construcciones de metadatos (WSDL o Policy) a las que corresponden.
La familiaridad con las especificaciones de metadatos, como WSDL y Policy, ayudará a comprender esta sección.
Dirección del punto de conexión
La dirección de un punto de conexión (vea WS_ENDPOINT_ADDRESS) se obtiene de un elemento de extensibilidad dentro del elemento wsdl:port del documento WSDL. Se admiten los siguientes elementos de extensibilidad para especificar la dirección:
<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
El enlace de canal (consulte WS_CHANNEL_BINDING) viene determinado por el transporte que usa el enlace soap, como se indica a continuación:
<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
La versión del sobre (consulte WS_CHANNEL_PROPERTY_ENVELOPE_VERSION) viene determinada por qué enlace soap se usa, como se indica a continuación:
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
Versión de direccionamiento
La versión de direccionamiento (consulte WS_CHANNEL_PROPERTY_ADDRESSING_VERSION) viene determinada por las siguientes aserciones en la directiva de punto de conexión:
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
Si una aserción de direccionamiento no está presente, se supone WS_ADDRESSING_VERSION_TRANSPORT .
Codificación de mensajes
La codificación del mensaje (consulte WS_CHANNEL_PROPERTY_ENCODING) viene determinada por las siguientes aserciones en la directiva de punto de conexión:
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
Tenga en cuenta que la aserción de directiva de codificación binaria no incluye información sobre si la codificación binaria es con sesión o sin sesión. Esto viene determinado por la restricción de propiedad de codificación (que debe ser adecuada según si el WS_CHANNEL_TYPE que se usa es con sesión o no).
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
Si ninguna de las aserciones anteriores está presente, se usa una codificación de texto: WS_ENCODING_XML_UTF8, WS_ENCODING_XML_UTF16LE, WS_ENCODING_XML_UTF16BE.
Tenga en cuenta que la directiva no incluye información sobre el juego de caracteres para codificaciones de texto o MTOM (ya sea UTF8, UTF16LE o UTF16BE). El valor real del juego de caracteres utilizado viene determinado por la restricción de propiedad de codificación.
Restricciones con autenticación de encabezado HTTP
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT .
Este enlace de seguridad se indica en la directiva mediante diferentes aserciones que indican que se debe usar la autenticación de encabezado HTTP y que se debe usar un esquema de autenticación determinado. Las aserciones de directiva corresponden a los valores de la WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME de la siguiente manera:
<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>
Restricciones con seguridad de transporte de SLL
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Restricciones con seguridad de transporte de SSPI
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Restricciones con seguridad de transporte
La restricción de propiedad WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL se puede especificar si se especifica alguna de las restricciones de enlace de seguridad:
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
El valor de la directiva siempre se WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT.
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
El valor de la directiva se especifica como parte de la aserción de WindowsTransportSecurity, como se indica a continuación:
<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
El valor de la directiva siempre se WS_PROTECTION_LEVEL_NONE.
Restricciones con el enlace de seguridad APREQ de Kerberos
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Restricciones con el enlace de seguridad de mensajes
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<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>
A continuación se describe la asignación de campos del WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT a la directiva anterior:
El campo claimConstraints se usa para comprobar el conjunto de URI de tipo de notificación que aparecen dentro del elemento wsi:ClaimType anterior.
El campo issuerAddress corresponde al elemento wsp:Issuer anterior, que es el WS_ENDPOINT_ADDRESS del servicio que puede emitir el token.
El campo requestSecurityTokenTemplate corresponde a los elementos secundarios del elemento wsp:RequestSecurityTokenTemplate.
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Esta sección se aplica cuando se especifica la restricción de enlace de seguridad WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT . En este caso se usan las siguientes aserciones de directiva:
<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>
El modo de entropía viene determinado por la <aserción sp:Trust10> . <sp:RequireClientEntropy/> y <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 sección se aplica cuando se especifica la restricción de enlace de seguridad WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT . Las siguientes aserciones de directiva se usan para identificar los WS_TRUST_VERSION y las opciones asociadas.
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
La versión de confianza se puede especificar mediante el WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT con un identificador de propiedad de WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION.
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION
Esta sección se aplica cuando se usa cualquiera de las siguientes restricciones de enlace:
- 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
La versión de seguridad de encabezado (especificada por WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION) viene determinada por una de las siguientes aserciones de directiva:
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
Restricciones con diseño de seguridad de encabezado
Esta sección se aplica cuando se usa cualquiera de las siguientes restricciones de enlace:
- 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
El diseño del encabezado de seguridad (especificado por WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT) viene determinado por una de las siguientes aserciones de directiva:
<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>
Restricciones con seguridad de marca de tiempo
Esta sección se aplica cuando se usa cualquiera de las siguientes restricciones de enlace:
- 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
Si se incluye o no una marca de tiempo en el encabezado de seguridad (según lo especificado por WS_SECURITY_PROPERTY_TIMESTAMP_USAGE) viene determinada por la presencia de sp:IncludeTimestamp en la siguiente ubicación:
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
Si la aserción sp:IncludeTimestamp está presente, el valor de la directiva se WS_SECURITY_TIMESTAMP_USAGE_ALWAYS.
Si la aserción sp:IncludeTimestamp no está presente, el valor de la directiva se WS_SECURITY_TIMESTAMP_USAGE_NEVER.