Interoperating with WSE

Cet exemple montre comment l'interopérabilité peut être réalisée entre un service WSE (améliorations de service Web) 3.0 et un client ou service Windows Communication Foundation (WCF).

L'exemple implémente une liaison personnalisée appelée WseHttpBinding. Cette liaison vous permet d'utiliser un fichier de stratégie de WSE 3.0 pour configurer un client ou un service WCF et réaliser l'interopérabilité avec WSE 3.0. WseHttpBinding effectue ceci en fournissant un mappage entre le fichier de stratégie des propriétés de WSE 3.0 et les propriétés dans les liaisons WCF. Vous pouvez considérer WseHttpBinding semblable à une liaison standard parce qu'il fournit une vue contrainte sur les propriétés des autres liaisons de la pile, plus particulièrement SecurityBindingElement.

L'exemple est divisé en deux parties. La première partie montre l'utilisation de WseHttpBinding pour effectuer un appel d'un client WCF à un WCF service auto-hébergé. La deuxième partie requiert l'installation du kit de développement logiciel WSE 3.0.

Utilisation de WseHttpBinding entre un client et un service WCF

Sur le client, la méthode CallWcfService crée une instance de WseHttpBinding et définit les propriétés pour les besoins de sécurité du client:

static void Main(string[] args)
{
    CallWcfService();
    ...
}

Ces spécifications doivent correspondre aux valeurs définies à l'intérieur de la fonction Main du service, comme affiché dans le code suivant :

//Create a ServiceHost for the CalculatorService type.
using (ServiceHost serviceHost =        new ServiceHost(typeof(CalculatorService)))
{
    //Create and configure the WseHttpBinding.
    WseHttpBinding binding = new WseHttpBinding();
    binding.SecurityAssertion =        WseSecurityAssertion.AnonymousForCertificate;
    binding.EstablishSecurityContext = true;
    binding.RequireDerivedKeys = true;
    binding.MessageProtectionOrder =        MessageProtectionOrder.SignBeforeEncrypt;

    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
    ServiceCredentials creds = new ServiceCredentials();
    creds.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine,
                                            StoreName.My,                                            X509FindType.FindBySubjectName,                                             "localhost");
    serviceHost.Description.Behaviors.Add(creds);
    serviceHost.Open();
    ...
}

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure indiquée dans la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer la solution C#, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.

  3. Pour exécuter l'exemple dans une configuration à un seul ordinateur, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

  4. Dans cet exemple, le service est auto-hébergé. Par conséquent, assurez-vous d'avoir exécuté le fichier Service.exe dans le répertoire /service /bin avant d'exécuter le client.

Utilisation de WseHttpBinding pour communiquer avec les services WSE 3.0

Le client dans ce projet peut également être utilisé pour communiquer avec les exemples de démarrage rapide contenus dans le kit de développement logiciel WSE 3.0.

Une fois le kit de développement logiciel de WSE 3.0 installé, vous pouvez utiliser l'outil Svcutil.exe pour générer un client qui pourra communiquer avec un service WSE 3.0 après la génération du service. L'exemple suivant indique procéder lorsque le service WSE 3.0 est en cours d'exécution sur l'ordinateur local.

svcutil.exe /out:wseproxy.cs /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost/WSSecurityAnonymousPolicy/WSSecurityAnonymousService.asmx

Le fichier Wseproxy.cs est inclus dans ce projet. Le nom de classe proxy généré est WSSecurityAnonymousServiceSoapProxy et est fourni avec WseHttpBinding qui a été configuré soit avec les propriétés dans le code, soit à l'aide d'un fichier de stratégie de WSE 3.0 chargé à partir du fichier de configuration Wse3PolicyCache.config. Un fichier de configuration Wse3PolicyCache.config est également inclus dans ce projet.

Une fois que l'exemple WSSecurityAnonymous de WSE 3.0 a été généré avec succès, une cotation boursière est retournée de manière sécurisée du service WSE 3.0 lorsque le client est en cours d'exécution.

Les instructions d'installation pour WSE 3.0 sont détaillées à la fin de cette rubrique.

Sur le client, commentez l'appel à CallWcfService et annulez les marques de commentaire du code de CallWseService. Le choix true ou false détermine si un fichier de stratégie est utilisé pour configurer WseHttpBinding en appelant la méthode LoadPolicy(String filename, String policyName) qui utilise XmlReader pour analyser le fichier de stratégie WSE 3.0.

ms752257.note(fr-fr,VS.90).gifRemarque :
Si WSE 3.0 est installé sur le client au lieu d'utiliser XmlReader pour charger un fichier de stratégie, vous pouvez modifier le code pour utiliser la classe Microsoft.Web.Services3.Design.Policies de WSE 3.0 pour charger la stratégie. L'avantage de ceci est que la classe Microsoft.Web.Services3.Design.Policies peut analyser tous les formulaires valides des fichiers de stratégie WSE 3.0 puis fournir ceci à WseHttpBinding. Avec le code utilisant le type XmlReader uniquement, seul un jeu limité de fichiers de stratégie peut être analysé.

Pour configurer, générer et exécuter l'exemple avec WSE 3.0

  1. Installez WSE 3.0 à partir de Web Services Enhancements (WSE) 3.0 pour Microsoft .NET (page pouvant être en anglais).

  2. Lisez le guide d'exemple Démarrage rapide de WSE 3.0 qui indique comment configurer et installer les exemples WSE. Cette étape est indispensable pour installer les certificats X.509 corrects et créer un répertoire virtuel pour héberger le service Web dans les services Internet (IIS). Exécutez en particulier le fichier Setup.bat dans le répertoire d'installation par défaut qui se trouve dans C:\Program Files\Microsoft WSE\v3.0\Samples.

  3. Générez l'exemple de stratégie du démarrage rapide WSE 3.0, installé par défaut dans le répertoire suivant. (Remarque : Il y a une version basée uniquement sur le code de WSSecurityAnonymous qui fonctionne également si vous préférez l'utiliser. Si vous souhaitez utiliser uniquement la version basée sur le code, vous devez modifier l'URL du service sur le client en https://localhost/WSSecurityAnonymousCode/WSSecurityAnonymousService.asmx).

  4. Il s'agit du projet WSE 3.0 : C:\Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy.

  5. Le client WCF dans cet exemple d'interaction a été conçu pour interagir avec cet exemple de Démarrage rapide WSE 3.0.

  6. Dans la fonction Main du fichier Client.cs, annulez les marques de commentaire des appels à la méthode CallWseService. Vous pouvez souhaiter également commenter l'appel à CallWcfService pour l'empêcher d'appeler le service WCF.

  7. Pour générer la solution C#, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.

  8. Pour exécuter l'exemple dans une configuration à un seul ordinateur, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

Pour configurer, générer et exécuter l'exemple avec WSE 3.0 sur plusieurs ordinateurs

  1. Installez tout d'abord un service WSE 3.0. Installez WSE 3.0 sur l'ordinateur distant à partir de Web Services Enhancements (WSE) 3.0 pour Microsoft .NET (page pouvant être en anglais).

  2. Lisez le guide d'exemple Démarrage rapide de WSE 3.0 qui indique comment configurer et installer les exemples WSE. Cette étape est indispensable pour installer les certificats X.509 corrects et créer un répertoire virtuel pour héberger le service Web dans les services Internet (IIS). Exécutez en particulier le fichier Setup.bat dans le répertoire d'installation par défaut qui se trouve dans C:\Program Files\Microsoft WSE\v3.0\Samples.

  3. Générez l'exemple de stratégie du Démarrage rapide WSE 3.0, installé par défaut dans le répertoire suivant.

    ms752257.note(fr-fr,VS.90).gifRemarque :
    Il existe une version basée uniquement sur le code de WSSecurityAnonymous qui fonctionne également si vous préférez l'utiliser.

  4. Il s'agit du projet WSE 3.0 : C:\Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy.

  5. Le serveur étant installé, nous n'allons pas installer le client WCF sur un autre ordinateur. À l'aide de l'outil MMC, exportez le certificat WSE2QuickStartServer qui se trouve dans le magasin de certificats LocalMachine/Personal où vous avez installé WSE 3.0 vers un fichier à l'aide de l'option Toutes les tâches->Exporter du menu contextuel. Vous n'avez pas besoin d'exporter la clé privée, uniquement la clé publique pour créer un fichier .CER. Consultez le fichier readme.htm dans le répertoire C:\Program Files\Microsoft WSE\v3.0\Samples de WSE 3.0 pour plus d'informations sur l'utilisation du composant logiciel enfichable de gestion de certificat MMC pour consulter des certificats dans un magasin de certificats.

  6. Copiez le fichier .CER de l'ordinateur serveur vers l'ordinateur client et importez le certificat public dans le magasin de certificats CurrentUser/Trusted People. Consultez le fichier readme.htm dans le répertoire C:\Program Files\Microsoft WSE\v3.0\Samples de WSE 3.0 pour plus d'informations sur l'utilisation du composant logiciel enfichable de gestion de certificat MMC.

    ms752257.note(fr-fr,VS.90).gifRemarque :
    Lorsque le fichier setup.bat de WSE 3.0 est exécuté, il copie le certificat de serveur WSE2QuickStartServer d'un magasin de certificats vers un autre pour vous.

  7. Pour exécuter l'exemple dans configuration à plusieurs ordinateurs, suivez les instructions dans Exécution des exemples Windows Communication Foundation pour le client WCF et configurez le client pour qu'il utilise l'adresse du service WSE 3.0 au lieu de localhost. Par exemple, sur un ordinateur appelé « monordinateur » que l'adresse est par défaut la suivante : http://monordinateur/WSSecurityAnonymousPolicy/WSSecurityAnonymousService.asmx.

  8. Dans la fonction Main du fichier Client.cs, annulez les marques de commentaire des appels à la méthode CallWseService. Vous pouvez souhaiter également commenter l'appel à CallWcfService pour l'empêcher d'appeler le service WCF.

  9. Pour générer la solution C#, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.

  10. Exécutez le client.

Pour procéder au nettoyage après exécution de l'exemple

  1. Pour supprimer les certificats du client ou du serveur, utilisez l'outil MMC. Sur le serveur, vous pouvez également exécuter le fichier Cleanup.bat qui se trouve dans le répertoire C:\Program Files\Microsoft WSE\v3.0\Samples.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.