Mappage des métadonnées
Le contenu d’un document de métadonnées est mappé à l’API de métadonnées de la manière expliquée dans les sections suivantes.
Les préfixes d’espace de noms suivants sont utilisés dans cette documentation :
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
Les sections suivantes décrivent les constructions d’API ainsi que les constructions de métadonnées (WSDL ou Stratégie) auxquelles elles correspondent.
La connaissance des spécifications de métadonnées telles que WSDL et Policy vous aidera à comprendre cette section.
Adresse du point de terminaison
L’adresse d’un point de terminaison (voir WS_ENDPOINT_ADDRESS) est obtenue à partir d’un élément d’extensibilité dans l’élément wsdl:port du document WSDL. Les éléments d’extensibilité suivants sont pris en charge pour la spécification de l’adresse :
<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
La liaison de canal (voir WS_CHANNEL_BINDING) est déterminée par le transport utilisé par la liaison soap, comme suit :
<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 version de l’enveloppe (voir WS_CHANNEL_PROPERTY_ENVELOPE_VERSION) est déterminée par la liaison soap utilisée, comme suit :
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
Version d’adressage
La version d’adressage (voir WS_CHANNEL_PROPERTY_ADDRESSING_VERSION) est déterminée par les assertions suivantes dans la stratégie de point de terminaison :
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
Si aucune assertion d’adressage n’est présente, WS_ADDRESSING_VERSION_TRANSPORT est supposé.
Encodage de message
L’encodage du message (voir WS_CHANNEL_PROPERTY_ENCODING) est déterminé par les assertions suivantes dans la stratégie de point de terminaison :
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
Notez que l’assertion de stratégie d’encodage binaire n’inclut pas d’informations indiquant si l’encodage binaire est de session ou sans session. Cela est déterminé par la contrainte de propriété d’encodage (qui doit être appropriée selon que le WS_CHANNEL_TYPE utilisé est sessionful ou non).
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
Si aucune des assertions ci-dessus n’est présente, un encodage de texte est utilisé : WS_ENCODING_XML_UTF8, WS_ENCODING_XML_UTF16LE, WS_ENCODING_XML_UTF16BE.
Notez que la stratégie n’inclut pas d’informations sur le jeu de caractères pour les encodages MTOM ou de texte (qu’il s’agisse de UTF8, UTF16LE ou UTF16BE). La valeur réelle du jeu de caractères utilisée est déterminée par la contrainte de propriété d’encodage.
Contraintes avec l’authentification d’en-tête HTTP
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT est spécifiée.
Cette liaison de sécurité est indiquée dans la stratégie par différentes assertions qui indiquent à la fois que l’authentification d’en-tête HTTP doit être utilisée et qu’un schéma d’authentification particulier doit être utilisé. Les assertions de stratégie correspondent aux valeurs du WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME comme suit :
<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>
Contraintes avec la sécurité du transport SLL
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Contraintes avec la sécurité de transport SSPI
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Contraintes avec la sécurité du transport
La contrainte de propriété WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL peut être spécifiée si l’une des contraintes de liaison de sécurité est spécifiée :
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
La valeur de la stratégie est toujours WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT.
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
La valeur de la stratégie est spécifiée dans le cadre de l’assertion WindowsTransportSecurity, comme suit :
<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
La valeur de la stratégie est toujours WS_PROTECTION_LEVEL_NONE.
Contraintes avec la liaison de sécurité Kerberos APREQ
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Contraintes avec la liaison de sécurité des messages
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<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>
L’exemple suivant décrit le mappage des champs de l’WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT à la stratégie ci-dessus :
Le champ claimConstraints est utilisé pour vérifier l’ensemble des URI de type de revendication qui apparaissent dans l’élément wsi:ClaimType ci-dessus.
Le champ issuerAddress correspond à l’élément wsp:Issuer ci-dessus, qui est le WS_ENDPOINT_ADDRESS du service qui peut émettre le jeton.
Le champ requestSecurityTokenTemplate correspond aux éléments enfants de l’élément wsp:RequestSecurityTokenTemplate.
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées dans ce cas :
<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>
Le mode d’entropie est déterminé par l’assertion <sp:Trust10> . <sp:RequireClientEntropy/> and <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
Cette section s’applique lorsque la contrainte de liaison de sécurité WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT est spécifiée. Les assertions de stratégie suivantes sont utilisées pour identifier les WS_TRUST_VERSION et les options associées.
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
La version d’approbation peut être spécifiée à l’aide de la WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT avec l’ID de propriété WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION.
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION
Cette section s’applique lorsque l’une des contraintes de liaison suivantes est utilisée :
- 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 version de sécurité de l’en-tête (telle que spécifiée par WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION) est déterminée par l’une des assertions de stratégie suivantes :
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
Contraintes avec disposition de sécurité d’en-tête
Cette section s’applique lorsque l’une des contraintes de liaison suivantes est utilisée :
- 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 disposition de l’en-tête de sécurité (telle que spécifiée par WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT) est déterminée par l’une des assertions de stratégie suivantes :
<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>
Contraintes avec la sécurité de l’horodatage
Cette section s’applique lorsque l’une des contraintes de liaison suivantes est utilisée :
- 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 un horodatage est inclus ou non dans l’en-tête de sécurité (comme spécifié par WS_SECURITY_PROPERTY_TIMESTAMP_USAGE) est déterminé par la présence de sp:IncludeTimestamp à l’emplacement suivant :
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
Si l’assertion sp:IncludeTimestamp est présente, la valeur de la stratégie est WS_SECURITY_TIMESTAMP_USAGE_ALWAYS.
Si l’assertion sp:IncludeTimestamp n’est pas présente, la valeur de la stratégie est WS_SECURITY_TIMESTAMP_USAGE_NEVER.