Partager via


Comment : configurer les services WCF pour interagir avec les clients WSE 3.0

Les services Windows Communication Foundation (WCF) sont compatibles au niveau câble avec les services Web Services Enhancements 3.0 for Microsoft .NET (WSE) lorsque les services WCF sont configurés pour utiliser la version d'août 2004 de la spécification WS-Addressing.

Pour permettre à un service WCF d'interagir avec les clients WSE 3.0

  1. Définissez une liaison personnalisée pour le service WCF.

    Pour indiquer que la version d'août 2004 de la spécification WS-Addressing est utilisée pour le codage des messages, il est nécessaire de créer une liaison personnalisée.

    1. Ajoutez un customBinding Element enfant au <Bindings> du fichier de configuration du service.

    2. Spécifiez un nom pour la liaison en ajoutant un binding element au customBinding Element et en définissant l'attribut name.

    3. Spécifiez un mode d'authentification ainsi que la version des spécifications WS-Security utilisées pour sécuriser les messages compatibles avec WSE 3.0 en ajoutant un Security element enfant au binding element.
      Pour définir le mode d'authentification, définissez l'attribut authenicationMode du Security element. Un mode d'authentification correspond plus ou moins à une assertion de sécurité clé en main WSE 3.0. La table suivante mappe les modes d'authentification de WCF aux assertions de sécurité clé en main de WSE 3.0.

      Mode d'authentification WCF Assertion de sécurité clé en main de WSE 3.0

      AnonymousForCertificate

      anonymousForCertificateSecurity

      Kerberos

      kerberosSecurity

      MutualCertificate

      mutualCertificate10Security*

      MutualCertificate

      mutualCertificate11Security*

      UserNameOverTransport

      usernameOverTransportSecurity

      UserNameForCertificate

      usernameForCertificateSecurity

      * L'une des principales différences entre les assertions de sécurité clé en main mutualCertificate10Security et mutualCertificate11Security réside dans la version de la spécification WS-Security utilisée par WSE pour sécuriser les messages SOAP. Pour mutualCertificate10Security, la version 1.0 de WS-Security est utilisée tandis que c'est la version 1.1 de WS-Security qui est utilisée pour mutualCertificate11Security. Pour WCF, la version de la spécification WS-Security utilisée est spécifiée dans l'attribut messageSecurityVersion de Security element.
      Pour définir la version de la spécification WS-Security utilisée pour sécuriser des messages SOAP, définissez l'attribut messageSecurityVersion de Security element. Pour permettre l'interaction avec WSE 3.0, affectez WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 à la valeur de l'attribut messageSecurityVersion.

    4. Spécifiez que la version d'août 2004 de la spécification WS-Addressing est utilisée par WCF en ajoutant un textMessageEncoding element, puis affectez Soap11WSAddressingAugust2004 à messageVersion.

      ms730049.note(fr-fr,VS.90).gifRemarque :
      Lorsque vous utilisez SOAP 1.2, affectez à l'attribut messageVersion la valeur Soap12WSAddressingAugust2004.

  2. Spécifiez que le service utilise la liaison personnalisée.

    1. Affectez la valeur customBinding à l'attribut binding de l'élément Service Endpoint.
    2. Affectez à l'attribut bindingConfiguration de l'élément Service Endpoint la valeur spécifiée dans l'attribut name de binding element pour la liaison personnalisée.

Exemple

Dans l'exemple de code suivant, Service.HelloWorldService utilise une liaison personnalisée pour interagir avec les clients WSE 3.0. La liaison personnalisée spécifie que la version d'août 2004 de la spécification WS-Addressing et que la version 1.1 de WS-Security sont utilisées pour encoder les messages échangés. Les messages sont sécurisés à l'aide du mode d'authentification AnonymousForCertificate.

<configuration>
  <system.serviceModel>
    <services>
      <service 
        behaviorConfiguration="ServiceBehavior" 
        name="Service.HelloWorldService">
        <endpoint binding="customBinding" address=""
          bindingConfiguration="ServiceBinding"
          contract="Service.IHelloWorld"></endpoint>
      </service>
    </services>

    <bindings>
      <customBinding>
        <binding name="ServiceBinding">
          <security authenticationMode="AnonymousForCertificate"
                  messageProtectionOrder="SignBeforeEncrypt"
                  messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                  requireDerivedKeys="false">
          </security>
          <textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004"></textMessageEncoding>
          <httpTransport/>
        </binding>
      </customBinding>
    </bindings>
    <behaviors>
      <behavior name="ServiceBehavior" returnUnknownExceptionsAsFaults="true">
        <serviceCredentials>
          <serviceCertificate findValue="CN=WCFQuickstartServer" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
        </serviceCredentials>
      </behavior>
    </behaviors>
  </system.serviceModel>
</configuration>

Voir aussi

Tâches

Comment : personnaliser une liaison fournie par le système