Client Validation
Les services publient fréquemment des métadonnées pour activer la génération et la configuration automatiques de types de proxy clients. Lorsque le service n'est pas approuvé, les applications clientes doivent valider que les métadonnées se conforment à la stratégie de l'application cliente en ce qui concerne la sécurité, les transactions, le type de contrat de service, etc. L'exemple suivant montre comment écrire un comportement de point de terminaison client qui valide le point de terminaison de service pour garantir que ce dernier est fiable.
Le service expose quatre points de terminaison de service. Le premier point de terminaison utilise WSDualHttpBinding, le deuxième utilise l'authentification NTLM, le troisième active le flux de transaction et le quatrième utilise l'authentification basée sur les certificats.
Le client utilise la classe MetadataResolver pour récupérer les métadonnées pour le service. Le client met en vigueur une stratégie d'interdiction des liaisons duplex, d'authentification NTLM et de flux de transaction à l'aide d'un comportement de validation. Pour chaque instance ServiceEndpoint importée à partir des métadonnées du service, l'application cliente ajoute une instance du comportement de point de terminaison InternetClientValidatorBehavior au ServiceEndpoint avant d'essayer d'utiliser un client Windows Communication Foundation (WCF) pour se connecter au point de terminaison. La méthode Validate du comportement s'exécute avant qu'une opération sur le service soit appelée et met en vigueur la stratégie du client en levant InvalidOperationExceptions.
Pour générer l'exemple
- Pour générer la solution, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.
Pour exécuter l'exemple sur le même ordinateur
Exécutez Setup.bat à partir du dossier d'installation de l'exemple. Tous les certificats requis pour l'exécution de l'exemple sont ainsi installés.
Exécutez l'application de service à partir de \service\bin\Debug.
Exécutez l'application cliente à partir de \client\bin\Debug. L'activité du client s'affiche sur son application de console.
Si le client et le service ne parviennent pas à communiquer, consultez la rubrique Conseils de dépannage.
Supprimez les certificats en exécutant Cleanup.bat une fois l'exemple terminé. D'autres exemples de sécurité utilisent ces mêmes certificats.
Pour exécuter l'exemple sur plusieurs ordinateurs
Sur le serveur, entrez setup.bat service. L'exécution de setup.bat
Sur le serveur, modifiez le fichier App.config en fonction du nouveau nom du certificat. En d'autres termes, remplacez l'attribut findValue de l'élément <serviceCertificate> of <serviceCredentials> Element par le nom de domaine complet de l'ordinateur.
Copiez le fichier Service.cer du répertoire de service vers le répertoire client sur l'ordinateur client.
Sur le client, entrez setup.bat client. L'exécution de setup.bat
Dans le fichier client.cs, modifiez la valeur de l'adresse du point de terminaison MEX et findValue pour que le certificat de serveur par défaut corresponde à la nouvelle adresse de votre service. Pour ce faire, remplacez localhost par le nom de domaine complet du serveur. Régénérez.
Copiez le fichier Client.cer du répertoire client vers le répertoire de service sur le serveur.
Sur le client, exécutez ImportServiceCert.bat. Cette opération importe le certificat de service du fichier Service.cer dans le magasin CurrentUser - TrustedPeople.
Sur le serveur, exécutez ImportClientCert.bat. Le certificat client est ainsi importé à partir du fichier Client.cer dans le magasin LocalMachine - TrustedPeople.
Sur l'ordinateur de service, générez le projet de service dans Visual Studio et exécutez service.exe.
Sur l'ordinateur client, exécutez client.exe.
- Si le client et le service ne parviennent pas à communiquer, consultez la rubrique Conseils de dépannage.
Pour procéder au nettoyage après exécution de l'exemple
Exécutez Cleanup.bat dans le dossier d'exemples après avoir exécuté l'exemple.
Remarque : Ce script ne supprime pas de certificat de service sur un client lors de l'exécution de cet exemple sur plusieurs ordinateurs. Si vous avez exécuté des exemples WCF qui utilisent des certificats sur plusieurs ordinateurs, assurez-vous d'effacer les certificats de service installés dans le magasin CurrentUser - TrustedPeople. Pour ce faire, utilisez la commande suivante : certmgr -del -r CurrentUser -s TrustedPeople -c -n <Nom complet du serveur>. Par exemple : certmgr - del - r CurrentUser - s TrustedPeople - c - n server1.contoso.com.
Voir aussi
Autres ressources
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.