Comment : accéder à un service WSE 3.0 avec un client WCF

Les clients Windows Communication Foundation (WCF) sont compatibles au niveau câble avec les services WSE (Web Services Enhancements) 3.0 for Microsoft .NET lorsque les clients WCF sont configurés pour utiliser la version d'août 2004 de la spécification WS-Addressing. Toutefois, les services WSE 3.0 ne prennent pas en charge le protocole d'échange de métadonnées (MEX), donc lorsque vous utilisez Service Metadata Utility Tool (SvcUtil.exe) pour créer une classe de client WCF, les paramètres de sécurité ne sont pas appliqués au client WCF généré. Par conséquent, vous devez spécifier les paramètres de sécurité que le service WSE 3.0 requiert une fois le client WCF généré.

Vous pouvez appliquer ces paramètres de sécurité en utilisant une liaison personnalisée pour prendre en compte les spécifications du service WSE 3.0 et les spécifications interopérables entre un service WSE 3.0 et un client WCF. Ces spécifications d'interopérabilité incluent l'utilisation précédemment mentionnée de la version d'août 2004 de la spécification WS-Addressing et la protection des messages par défaut WSE 3.0 de SignBeforeEncrypt. La protection des messages par défaut pour WCF est SignBeforeEncryptAndEncryptSignature. Cette rubrique explique comment créer une liaison WCF qui interagit avec un service WSE 3.0. WCF fournit également un exemple qui incorpore cette liaison. Pour plus d'informations sur cet exemple, consultez Interoperating with WSE.

Pour accéder à un service Web WSE 3.0 avec un client WCF

  1. Exécutez Service Metadata Utility Tool (SvcUtil.exe) pour créer un client WCF pour le service Web WSE 3.0.

    Pour un service Web WSE 3.0, un client WCF est créé. WSE 3.0 ne prenant pas en charge le protocole MEX, vous ne pouvez pas utiliser l'outil pour récupérer les conditions de sécurité pour le service Web. Le développeur d'applications doit ajouter les paramètres de sécurité pour le client.

    Pour plus d'informations sur la création d'un client WCF, consultez Comment : créer un client Windows Communication Foundation.

  2. Créez une classe qui représente une liaison pouvant communiquer avec les services Web WSE 3.0.

    La classe suivante fait partie de l'exemple Interoperating with WSE :

    1. Créez une classe qui dérive de la classe Binding.
      L'exemple de code suivant crée une classe nommée WseHttpBinding qui dérive de la classe Binding.
    2. Ajoutez à la classe des propriétés spécifiant l'assertion clé en main WSE utilisée par le service WSE, si des clés dérivées sont requises, si des sessions sécurisées sont utilisées, si des confirmations de signature sont requises, ainsi que les paramètres de protection des messages. Dans WSE 3.0, une assertion clé en main spécifie les conditions de sécurité pour un client ou un service Web (similaire au mode d'authentification d'une liaison dans WCF).
      L'exemple de code suivant définit les propriétés SecurityAssertion, RequireDerivedKeys, EstablishSecurityContext et MessageProtectionOrder qui spécifient l'assertion clé en main WSE, si des clés dérivées sont requises, si des sessions sécurisées sont utilisées, si des confirmations de signature sont requises, ainsi que les paramètres de protection des messages, respectivement.
    3. Substituez la méthode CreateBindingElements pour définir les propriétés de la liaison.
      L'exemple de code suivant spécifie le transport, le codage de message et les paramètres de protection des messages en obtenant les valeurs des propriétés SecurityAssertion et MessageProtectionOrder.
  3. Dans le code d'application cliente, ajoutez le code pour définir les propriétés de la liaison.

    L'exemple de code suivant spécifie que le client WCF doit utiliser l'authentification et la protection des messages telles que définies par l'assertion de sécurité clé en main AnonymousForCertificate WSE 3.0. En outre, des sessions sécurisées et des clés dérivées sont requises.

Exemple

L'exemple de code suivant définit une liaison personnalisée qui expose des propriétés correspondant à celles d'une assertion de sécurité clé en main WSE 3.0. Cette liaison personnalisée, qui est appelée WseHttpBinding, est utilisée pour spécifier les propriétés de liaison d'un client WCF qui communique avec l'exemple de Démarrage rapide WSE 3.0 WSSecurityAnonymous.

Voir aussi

Référence

Binding

Autres ressources

Interoperating with WSE