Peer Channel Custom Authentication

Cet exemple illustre l'utilisation de la NetPeerTcpBinding avec le mode d'authentification personnalisé, qui assure la communication pluripartite à l'aide de l'authentification d'homologue fournie par l'application. Cet exemple est une variante de Getting Started, exemple. Pour une vue d'ensemble de Windows Communication Foundation (WCF), consultez Getting Started, exemple.

Dans cet exemple, toutes les instances sont des applications console auto-hébergées ; il n'y a aucun concept de client et serveur.

Contrairement à d'autres exemples de liaison de transport, cet exemple utilise l'interface de contrat IChat à des fins d'illustration de la communication pluripartite. Toutes les instances implémentent ce contrat pour recevoir des messages et créer des proxys du même contrat afin d'envoyer des messages à la maille. Cela est illustré en créant un canal duplex vers la maille.

ms751447.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent à la fin de cette rubrique.

Le canal homologue (Peer Channel) est une technologie de communication P2P (peer-to-peer) entre plusieurs parties de WCF. Elle fournit un canal de communication P2P basé sur des messages sécurisé et évolutif pour les développeurs d'applications. Un exemple courant d'application pluripartite pouvant bénéficier du canal homologue concerne les applications collaboratives telles que la conversation, dans le cadre de laquelle un groupe de personnes discutent les unes avec les autres d'égal à égal sans qu'un serveur soit nécessaire. Peer Channel permet la collaboration P2P, la distribution de contenu, l'équilibrage de charge et le traitement distribué des scénarios consommateur et d'entreprise.

Peer Channel introduit les nouveaux concepts suivants :

  • Une maille est une collection nommée (un graphique interconnecté) de nœuds d'homologues qui peuvent communiquer entre eux et qui sont identifiés par un ID de maille unique.

    ms751447.note(fr-fr,VS.90).gifRemarque :
    Les nœuds actifs dans la maille publient leur nom de maille afin de permettre aux autres de les identifier. Une maille a les caractéristiques suivantes : elle s'adapte automatiquement lorsque des nœuds rejoignent et quittent la maille, en garantissant que tous les nœuds ont une bonne connectivité à la maille, et que les connexions sont optimisées dynamiquement selon les modèles de trafic actuels.

  • Un nœud homologue est un point de terminaison dans une maille. Une application peut disposer de plusieurs nœuds homologues participant à différentes mailles.

  • Un programme de résolution d'homologue est chargé de résoudre un ID de maille aux adresses de point de terminaison de certains nœuds dans la maille. Un nœud homologue utilise ces adresses pour se connecter à d'autres nœuds de la maille. Les messages peuvent ainsi être propagés sur l'ensemble de la maille.

PeerTransportCredentialType spécifie la manière dont les homologues dans la maille sont authentifiés les uns par rapport aux autres. Cette propriété peut être spécifiée soit dans la configuration de liaison, dans l'objet NetPeerTcpBinding, soit en utilisant PeerTransportBindingElement. Une instance ClientCredentialSettings (ou ServiceCredentialSettings) avec les informations d'identification appropriées spécifiées sur la propriété Peer doit être ajoutée à la collection de comportements sur la fabrication de canal ou l'hôte de service selon l'utilisation.

Le canal homologue prend en charge les modes d'authentification suivants dans la classe PeerTransportCredentialType :

  1. Password. Il s'agit du mode d'authentification par défaut pour le canal homologue. Dans ce mode, tous les participants à la maille sont supposés prouver qu'ils connaissent un mot de passe secret. Cela s'effectue en établissant une connexion sécurisée entre des voisins et en échangeant une transformation de ce mot de passe. Lorsque Password est spécifié, la propriété ClientCredentialSettings.Peer doit contenir un mot de passe valide et éventuellement une instance X509Certificate2 (à l'aide de SetSelfCertificate).
  2. Certificate. Dans ce mode, l'authentification spécifique à l'application est effectuée lors de l'établissement de connexions homologue. Lorsque ce mode est spécifié, l'application doit spécifier une implémentation concrète de X509Certificate2Validator dans ClientCredentialSettings.Peer.PeerAuthentication ajouté à la fabrication de canal.

La liaison est spécifiée dans le fichier de configuration du client. Le type de liaison est spécifié dans l'attribut binding de l'élément de point de terminaison, comme le montre l'exemple suivant.

<client>
  <!-- chat instance participating in the mesh -->
  <endpoint name="ChatEndpoint"
            address="net.p2p://SecurechatMesh/servicemodelsamples/chat"
            binding="netPeerTcpBinding"
            bindingConfiguration="MyBinding"
            contract="Microsoft.ServiceModel.Samples.IChat">
  </endpoint>
</client>

Si vous utilisez la liaison NetPeerTcpBinding avec le comportement par défaut, la sécurité par mot de passe est activée. L'élément binding fournit des attributs permettant de définir le port, l'adresse IP d'écoute, le type de programme de résolution, la taille maximale des messages, la taille maximale du pool de mémoires tampons, les quotas de lecteurs, le mode d'authentification, l'authentification des messages et les délais d'attente (fermeture, ouverture, envoi et réception).

ms751447.note(fr-fr,VS.90).gifRemarque :
Cet exemple utilise le programme de résolution d'homologue (PNRP) par défaut, qui n'est pas disponible dans Windows Server 2003. Par conséquent, pour exécuter cet exemple sur Windows Server 2003, vous devez utiliser un programme de résolution d'homologue personnalisé. Pour un exemple qui utilise un programme de résolution d'homologue personnalisé, consultez Peer Channel Chat.

<netPeerTcpBinding>
    <binding configurationName="Binding1"> 
        <resolver mode="Custom">
            <customResolver type=
                 "MyAppNameSpace.MyCustomPeerResolver, myApp"/>
        </resolver>
    </binding>
</netPeerTcpBinding>

Le fichier qui contient MyCustomPeerResolver doit être compilé avec les instances de conversation. Notez que si l'exemple est exécuté sur plusieurs ordinateurs avec différentes plateformes, ils doivent tous utiliser le même programme de résolution.

Cet exemple montre également comment récupérer le nœud homologue associé à l'instance de récepteur ou d'expéditeur et comment s'inscrire aux événements en ligne et hors connexion. Un événement en ligne est déclenché lorsque le nœud homologue est connecté à au moins un autre nœud homologue dans la maille. Un événement hors connexion est déclenché lorsqu'un nœud homologue n'est plus connecté à aucun autre nœud homologue dans la maille.

Pour le moment, Peer Channel n'est pas intégré à l'ServiceModel Metadata Utility Tool (Svcutil.exe).

Lorsque l'exemple est exécuté, le client affiche un message qui indique qu'il est prêt à envoyer des messages. Les messages envoyés par un client apparaissent dans les fenêtres de console de tous les autres clients joints à la même maille. Pour arrêter le client, appuyez sur la touche Q, puis sur ENTER dans les fenêtres de console d'un client.

Si vous activez le suivi ou la journalisation des messages, vous pouvez surveiller l'activité des messages de manière plus approfondie. Les procédures suivantes décrivent comment activer le suivi et la journalisation des messages.

ms751447.note(fr-fr,VS.90).gifRemarque :
Il est important de noter que l'exemple ne gère pas actuellement toutes les exceptions possibles que l'infrastructure peut lever. Si vous utilisez ces exemples dans un environnement commercial ou de production, conformez-vous aux meilleures pratiques de gestion des exceptions.

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 l'édition C# ou Visual Basic .NET de la solution, 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. Pour installer PNRP sur Windows XP SP2 (installation unique) :

    1. Dans le Panneau de configuration, double-cliquez sur Ajout/Suppression de programmes.
    2. Dans la boîte de dialogue Ajouter ou supprimer des programmes, cliquez sur Ajouter ou supprimer des composants Windows.
    3. Dans l'Assistant Composants de Windows, activez la case à cocher « Services de mise en réseau », puis cliquez sur « Détails ».
    4. Activez la case à cocher « Homologue à homologue » et cliquez sur « OK ».
    5. Cliquez sur « Suivant » dans l'Assistant Composants de Windows.
    6. Lorsque l'installation est terminée, cliquez sur « Terminer ».
    7. À partir d'une invite de commandes shell, démarrez le service PNRP avec la commande suivante : net start pnrpsvc.
  5. À chaque fois que l'étape 3 fait référence au client et au service, ces étapes s'appliquent à des instances distinctes de l'application.

  6. Si vous exécutez cet exemple sur un ordinateur pour la première fois, exécutez Setup.bat pour créer un certificat qui publie une autorité et deux certificats clients. Le nom par défaut de l'autorité émettrice est « TrustedPeerChannelIssuer », et ceux des certificats clients sont « peer1 » et « peer2 ». Les noms peuvent être spécifiés à titre facultatif en passant des arguments à Setup.bat comme suit : « setup.bat <peername> <issuername> », où <peername> est un préfixe pour les clients et où <issuername> est le nom de l'exemple d'émetteur de confiance. Par exemple, l'entrée de « setup.bat peer fake_issuer » crée un émetteur de confiance appelé « fake_issuer » et des certificats client nommés « peer1 » et « peer2 ». Si toutes les instances de l'exemple sont exécutées sur un ordinateur unique, passez à étape 7.

  7. Étapes supplémentaires pour l'installation sur plusieurs ordinateurs : pour exécuter l'exemple sur des ordinateurs différents, les informations du certificat d'un ordinateur doivent être copiées dans tous les autres ordinateurs qui exécutent l'exemple, afin que les informations relatives à l'émetteur soient cohérentes dans tous les homologues. Cela peut être accompli en exportant les certificats clients créés à l'aide de l'émetteur de confiance (généré par Setup.bat). L'émetteur de confiance (TrustedPeerChannelIssuer.cer si le nom par défaut est utilisé) doit également être copié dans tous les autres ordinateurs clients qui exécutent l'exemple. Suivez ces trois étapes :

    1. Transfert de l'émetteur de confiance : copiez le fichier .cer (généré en exécutant Setup.bat dans le même dossier) dans l'ordinateur client. Cliquez avec le bouton droit sur le fichier et sélectionnez Installer le certificat. Appuyez sur Suivant, puis sélectionnez Placer tous les certificats dans le magasin suivant. Appuyez sur Parcourir et choisissez Personnes autorisées comme destination du certificat. Sélectionnez Suivant et Terminer pour terminer d'importer le certificat.
    2. Exportation du certificat client : commencez par exécuter Certmgr.msc sur l'ordinateur utilisé pour générer les certificats clients. Sélectionnez le certificat client du magasin personnel (sous « Certificats - Utilisateur actuel » -> « Personnel » -> « Certificats »). Cliquez avec le bouton droit sur le certificat et sélectionnez « Toutes les tâches » -> « Exporter… » pour démarrer l'Assistant Exportation de certificat. Appuyez sur « Suivant », sélectionnez « Oui, exporter la clé privée » et appuyez sur « Suivant ». Sélectionnez « Suivant » à nouveau pour choisir le format .pfx et les valeurs par défaut. Entrez un mot de passe pour les certificats et cliquez encore une fois sur « Suivant ». Enfin, choisissez un chemin d'accès et un nom de fichier et cliquez sur « Suivant » et « Terminer » pour compléter le processus d'exportation.
    3. Importation du certificat client : copiez le fichier .pfx créé à l'étape (b) dans l'ordinateur client. Cliquez avec le bouton droit sur le fichier et sélectionnez « Installer PFX ». Appuyez sur « Suivant » deux fois, puis entrez le mot de passe utilisé pour exporter le certificat. Appuyez sur « Suivant » et « Terminer » pour placer le certificat dans le magasin personnel.
      ms751447.note(fr-fr,VS.90).gifRemarque :
      La création d'un émetteur de confiance et son exportation à l'aide du transfert de fichier peut poser certains risques de sécurité si le fichier est distribué de manière inappropriée. Veillez à nettoyer les exemples de certificats après avoir exécuté l'exemple (étape 8).

  8. Exécutez le nombre souhaité d'instances de l'application. Les messages envoyés par une instance sont reçus par les autres. Chaque instance a le nom par défaut de « peer1 ». Pour faire la différence entre des instances spécifiques, modifiez la valeur de la clé « membre » dans appSettings dans le fichier de configuration de l'application et créez un certificat client avec le même nom.

  9. Enfin, exécutez Cleanup.bat pour supprimer les certificats créés par cet exemple. Si des noms non définis par défaut sont utilisés, exécutez « Cleanup.bat <peername> <issuername> » avec les mêmes valeurs que celles utilisées à l'étape 6.

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