0 votes

Authentifier un client se connectant à un service web

J'ai un service web WCF. Ce service web devrait uniquement permettre à certaines applications clientes (construites avec des technologies telles que Silverlight, Flex, ClickOnce, etc.) d'exécuter sa fonctionnalité. Dans le but de réaliser cela, j'ai commencé chaque méthode publiquement visible avec le code suivant:

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

Ma question est, que devrais-je vérifier? J'ai envisagé de passer un identifiant unique en tant que paramètre de type chaîne, puis de passer ce paramètre à la méthode IsClientValid. Cependant, je sais que quelqu'un pourrait utiliser un outil tel que Fiddler pour intercepter cette valeur de paramètre et l'utiliser dans ses propres applications. Comment puis-je identifier de manière unique mes applications clientes afin que seules elles puissent utiliser mes services web WCF?

Merci

1voto

Tanner Points 6058

En fonction de jusqu'où vous voulez aller, vous pouvez faire un certain nombre de choses. Dans une application sur laquelle j'ai travaillé, nous avons fait ce qui suit :

  • Sécurité des messages - pour crypter vos messages, le client doit fournir des informations d'identification (authentification par nom d'utilisateur) avec le serveur fournissant un certificat de service pour le cryptage des messages.

  • Des en-têtes Soap cryptés personnalisés ont été utilisés pour fournir les détails du client avec chaque message après la connexion initiale. Cet en-tête est crypté en utilisant une combinaison de valeurs prises à partir de l'application cliente et des valeurs récupérées du serveur lors de l'appel initial.

  • Tous les messages sortants du client attachent l'en-tête crypté, que le serveur extrait/décrypte à la réception et que 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 du côté du serveur pour se protéger contre les attaques de rejeu utilisant des en-têtes interceptés.

Je peux fournir des ressources/liens supplémentaires sur la manière d'atteindre certains de ces objectifs si vous pensez que vous pourriez en avoir besoin.

Édition : En supposant que les applications clientes sont sous votre contrôle.

0voto

Hank Gay Points 36173

Découvrez l'authentification du certificat client. L'idée de base est que la connexion https échouera sauf si le client envoie un certificat valide, où vous pouvez déterminer ce qui est valide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X