2009-04-22 6 views
0

J'ai un service Web WCF. Ce service Web ne devrait permettre que certaines applications client (construites avec des technologies comme Silverlight, Flex, ClickOnce, etc.) pour exécuter ses fonctionnalités. Dans une tentative d'accomplir ceci, j'ai commencé chaque méthode publiquement visible avec le code suivant:Authentification d'un client se connectant à un service Web

si (IsClientValid (...) == false) return;

Ma question est, que dois-je vérifier? J'ai envisagé de passer un identificateur unique en tant que paramètre de chaîne, puis en passant ce paramètre à la méthode IsClientValid. Cependant, je sais que quelqu'un pourrait utiliser un outil comme Fiddler pour détecter cette valeur de paramètre et l'utiliser dans ses propres applications. Comment puis-je identifier de manière unique mes applications clientes de façon à ce qu'elles soient les seules à pouvoir utiliser mes services Web WCF?

Merci

Répondre

1

En fonction de la distance que vous voulez vous aller peut faire un certain nombre de choses. Dans une application que je travaillais sur nous l'avons fait ce qui suit:

  • sécurité des messages - pour crypter vos messages, le client doit fournir des informations (userNameAuthentication) avec serveur fournissant serviceCertificate pour le chiffrement des messages. Les en-têtes de savon cryptés personnalisés ont été utilisés pour fournir des détails sur le client avec chaque message après la connexion initiale. Cet en-tête est crypté en utilisant une combinaison de valeurs tirées de l'application client et des valeurs extraites du serveur dans l'appel initial.

  • Tous les messages sortants client attachent l'en-tête crypté, que le serveur extrait/décrypte lors de la réception et le service de base vérifie que les valeurs requises sont présentes. En plus de cela, une collection d'en-têtes cryptés est stockée côté serveur pour se prémunir contre les attaques de rejeu utilisant des en-têtes reniflés.

Je peux fournir des ressources/liens supplémentaires sur la façon de réaliser une partie de ceci si vous pensez pouvoir en utiliser. Éditer: En supposant que les applications clientes sont sous votre contrôle.

0

Extraction du certificat client . L'idée de base est que la connexion https échouera à moins que le client envoie un certificat valide, où vous obtenez de déterminer ce qui est valide.

Questions connexes