2009-07-23 7 views
5

Je travaille sur une application qui a plusieurs clients - Desktop, Mobile Device, Web Portal. Nous passons à un type d'architecture SOA et utiliserons WCF. L'histoire de WCF est géniale quand il s'agit d'utiliser netTcp + transport/sécurité des messages + authentification Windows (ou même UsernameToken et un fournisseur UsernameValidator personnalisé) du côté Desktop et Web Portal. Lorsqu'il se décompose totalement, c'est sur le côté du châssis compact ... le sous-ensemble de WCF qu'il supporte est tellement limitant. Je me suis résigné à simplement utiliser basicHttp + Nom d'utilisateur/Mot de passe dans les en-têtes SSL, mais il semble que vous ne puissiez pas ajouter d'en-têtes sur la pile compacte (sans OperationContextScope) - cela me laisse un nom d'utilisateur/mot de passe Méthode d'opération SIMPLE dans le service.Meilleure façon d'utiliser et de sécuriser WCF sur le Compact Framework?

S'il vous plaît dites-moi que je me trompe et qu'il y a un meilleur moyen.

+0

Je n'ai pas essayé cela, mais pouvez-vous utiliser l'authentification de base sur HTTPS? –

+0

Je n'ai pas trouvé un moyen de le faire à travers la pile WCF sur CF - je pense que c'est la raison pour laquelle certaines personnes choisissent de traiter le service WCF comme un service web traditionnel (Ajouter Web Reference ...). –

Répondre

1

Votre meilleur pari va être d'exposer un point final WCF qui est conforme aux normes de sécurité WS.

Vous devriez alors être en mesure d'utiliser ces normes pour la sécurité basée sur les messages (probablement en utilisant X.509). Voici le lien MSDN pour commencer:

Messaging in the .NET Compact Framework

1

Une solution alternative est de passer un billet (lire: guid).

Le client se connecte (envoie un nom d'utilisateur et un mot de passe). Un ticket généré aléatoirement est généré (guid again), mis en cache sur le serveur et renvoyé au client. Ce ticket est ensuite transmis au lieu du nom d'utilisateur et du mot de passe.

Bien sûr, tout cela suppose que vous ne voulez pas seulement utiliser l'état de session. Mais en d'autres termes, j'ai eu le même problème que vous avez rencontré. Ça craint. C'est comme ça que je me suis débrouillé un peu, donc c'était utilisable.

Quoi qu'il en soit, une autre bonne référence est le WCF Guidance for Mobile.

+0

Je pensais à revenir à quelque chose comme ça, peut-être aller avec quelque chose qui peut être calculé à partir du mot de passe (ou le hachage NT du mot de passe) afin qu'il puisse être sans état. Tous sécurisés via SSL bien sûr. –

Questions connexes