2009-12-14 3 views
4

Je suis relativement nouveau à WCF et aimerais avoir des opinions sur la meilleure façon (ou la plus correcte) d'implémenter l'authentification sur une application qui expose ses opérations de couche de gestion via WCF?Quelle est la meilleure façon d'implémenter l'authentification dans un service WCF sur une architecture d'entreprise?

Est-ce qu'un token est censé être passé, un nom d'utilisateur/mot de passe crypté et vérifié à chaque fois ... ou quoi?

En outre, n'importe quels liens seraient appréciés.

Répondre

2

Une considération de sécurité très important est que la sécurité dans WCF fonctionne sur deux niveaux

sécurité du message

  • Nom d'utilisateur/mot de passe
  • Jeton
  • informations d'identification Windows
  • Certificat client
  • etc.

la sûreté du transport

  • Certificat service
  • etc.(Je ne sais pas vraiment d'autres cos ive seulement utilisé 1)

Sa bonne pratique d'utiliser une sécurité de couche de transport pour protéger la communication en général, et la couche de message pour authentifier l'utilisateur en tant qu'utilisateur valide, et approuver ses privilèges .

Que vous authentifiez à chaque appel est déterminé si le contrat de service est défini comme un

  • Singleton
  • PerService
  • Percall

Je suggère d'utiliser Percall comme le plus efficace utilisation de ressources matérielles mais cela dépend beaucoup de votre situation.

0

J'en connais un que j'utilise: Son utilisation de l'infrastructure d'adhésion ASP.NET pour faire l'authentification avec WCF. J'essaye actuellement d'autoriser OpenID et d'autres fournisseurs dans le système qui me fait repenser l'adhésion d'ASP.NET pour ce type d'authentification.

Mais si vous contrôlez vos propres comptes, j'irais avec l'adhésion ASP.NET.

1

WCF offre de nombreux mécanismes d'authentification et d'autorisation ultérieure. En ce qui concerne l'authentification: si vous êtes derrière un pare-feu d'entreprise dans un réseau local, utiliser les informations d'identification Windows est le plus simple: aucun nom d'utilisateur/mot de passe à mémoriser et à envoyer. Cela peut être combiné avec des vérifications d'autorisation par rapport au système d'appartenance à un groupe Windows, par ex. autoriser uniquement certains groupes d'utilisateurs à effectuer une action.

Si vous recherchez des services Internet, vous avez le choix entre des schémas de nom d'utilisateur/mot de passe ou des certificats. Le schéma de nom d'utilisateur/mot de passe standard peut être vérifié par rapport au système d'adhésion ASP.NET qu'APP.NET 2.0 nous a apporté, tant pour l'authentification (adhésion) que pour l'autorisation (fournisseur de rôle).

Les certificats sont parfaits si vous avez affaire à un ensemble très limité d'utilisateurs externes, par ex. busienss partners ou autres. Le certificat doit être livré au client "hors bande", par ex. d'une autre manière, par disque ou quelque chose. Mais une fois installé, il est transparent à utiliser et à vérifier. Juval Lowy (auteur de "Programmation WCF Services") a un excellent article sur MSDN sur Declarative WCF Security dans lequel il souligne ses cinq scénarios de sécurité, comment les utiliser et les sécuriser, et il a même une extension déclarative pour WCF à faire ceci en appliquant simplement un attribut à votre contrat de service - plutôt joli!

1

J'ai récemment implémenté une couche de service WCF plutôt grande pour certains services d'aperçu multimédia. Puisque nous l'exposons à Internet, l'authentification Windows n'était pas une option. En raison du fait que nous avions déjà un système d'utilisateur/rôle existant, nous avons également décidé de ne pas utiliser les fournisseurs d'adhésion ASP.NET.

J'ai fini par implémenter un module d'authentification/autorisation personnalisé et utiliser SSL comme élément de sécurité de la couche de transport. En utilisant les attributs WCF, je peux vérifier les permissions de rôle en utilisant l'infrastructure WCF standard.

Liens qui m'a aidé sur mon chemin se rendre à l'objectif:

http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx

http://www.leastprivilege.com/CustomPrincipalsAndWCF.aspx

http://www.samuelotter.com/node/7

Questions connexes