2010-11-19 3 views
4

Nous avons un service Web (WCF en C#) qui a été utilisé sur un intranet jusqu'à maintenant. À l'avenir, nous voulons l'ouvrir à Internet.
Évidemment, nous sommes préoccupés par le fait que les gens méchants ne peuvent pas accéder aux interfaces. Quelle est la meilleure méthode d'assurer cela dans la WCF? Est-ce WSS?
Je suppose une sorte d'interface de connexion et un jeton retourné que le client doit utiliser avec chaque appel?WCF: Connexion au service Web/Authentification: HowTo?

Répondre

3

Vous avez essentiellement six options:

  • comptes Windows - grands dans l'intranet, pas si grand dans les scénarios Internet (intégré, configurer seulement)

  • Nom d'utilisateur/mot de passe contre l'ASP Système d'adhésion .NET: vous devez toujours conserver une base de données d'utilisateurs valides; en fonction de ce que vous voulez faire, cela peut fonctionner pour vous (intégré, configurer seulement - vous devez garder une trace de votre base d'utilisateurs)

  • Certificats sur les machines client appelant: seulement les machines qui ont le droit les certificats sont autorisés dans; Idéal pour un groupe fermé d'utilisateurs, pas très bon dans les scénarios généraux d'Internet (intégré, configurer seulement)

  • Une sorte d'en-tête requis - soit vérifié par rapport à une base de données (par exemple "jeton d'en-tête valide"), ou juste vérifié par exemple calculer une somme de contrôle ou quelque chose - toute personne qui connaît votre en-tête «secret» sera en mesure d'appeler (intégré, nécessite un peu de codage pour extraire et vérifier l'en-tête)

  • Une solution personnalisée - vous pouvez définir votre propre scénario d'authentification/autorisation, et personnalisez-le à votre goût; nécessite un code de votre côté - mais vous donne une flexibilité optimale (votre code personnalisé tout le chemin)

  • Aucun contrôle - il suffit de le laisser ouvert à tous (intégré, configurer seulement)

WCF gourou extraordinaire, Juval Lowy, a un excellent article dans le magazine MSDN: Declarative WCF Security - peut-être cela peut vous donner quelques conseils supplémentaires et des pointeurs. Il définit fondamentalement cinq scénarios et discute de sa solution recommandée pour chacun (et fait également cuire ces choses dans un cadre déclaratif prêt à l'emploi, basé sur les attributs)

+0

Vous ne pensez pas que le contrôle d'accès basé sur les revendications avec WIF est une option? Avec la fédération, le client sera en mesure de contrôler quels utilisateurs ont accès au système distant. C'est souvent un très bon argument de vente en ce qui concerne les mises à pied, etc. si le système expose des données critiques. –

+0

@Klaus Byskov Hoffmann: En toute honnêteté, je ne connais pas vraiment les systèmes basés sur les revendications. Jusqu'à présent, ils ne semblent pas très bien fonctionner dans un environnement plus petit - ou ils seraient exagérés dans un tel scénario. Ils sont parfaits pour les entreprises mondiales disposant d'une multitude de mécanismes de connexion - mais quel avantage a un seul service/entreprise? –

+0

Je comprends d'où vous venez. Mais Microsoft semble aligner son portefeuille de produits sur l'autorisation basée sur les revendications. SqlServer et Sharepoint ont des versions à venir qui le supportent, et Active Directory a déjà le rôle STS intégré.Je pense donc que les gens vont devoir adopter cette technologie à un moment donné. Quoi qu'il en soit, je ne fais que le recommander car je travaille moi-même et j'ai l'impression que ce qui retient les gens, c'est l'idée fausse que c'est vraiment difficile à mettre en œuvre. Ce qui n'est pas. –

2

Vous devriez vérifier Windows Identity Foundation (WIF). Avec WIF, vous pouvez créer un service de jeton de sécurité qui prend en charge la partie d'authentification, de sorte que vos services WCF ne doivent traiter qu'avec l'autorisation. C'est un sujet assez important, alors je vous suggère de regarder quelques whitepapers et de décider si vous voulez l'utiliser du tout, puis revenez et posez des questions plus spécifiques.

+0

Je suis d'accord. C'est certainement la voie à suivre, pas seulement pour les services WCF, mais pour toutes les applications web qui ont besoin de services d'authentification. L'approche basée sur les revendications découple le mécanisme d'authentification des applications (et est intrinsèquement réutilisable), et donne également une base beaucoup plus flexible pour l'autorisation. Le meilleur de tous, WIF a rendu tout à fait facile à faire. –