2010-02-16 4 views
6

J'ai vu plusieurs scénarios similaires expliqués ici, mais pas mon cas particulier. Je me demande si quelqu'un pourrait me dire dans quelle direction aller?MVC2 Apps (et autres) partageant les services WCF et l'authentification

Je développe deux applications MVC2 (et plus tard). Il y aura également un autre client (plus épais) plus tard (WPF ou Silverlight, TBD). Tous doivent partager la même authentification. Pour les applications MVC2, elles doivent (de préférence) être connectées une seule fois: si un utilisateur se connecte à une application MVC2, elles doivent être autorisées de l'autre côté, tant que le cookie n'a pas expiré.

L'authentification par formulaire doit être utilisée.

Toutes les applications doivent utiliser une fonctionnalité métier commune et effectuer un accès db via une application de service WCF commune. Ce serait bien (je pense) que la WCF ne soit pas accessible au public (c'est-à-dire bloquée derrière FW). Le client plus épais peut utiliser une couche de service supplémentaire pour accéder à l'application Common WCF.

Ce que cela devrait ressembler est:

MVCApp1 -> WCFAppCommon

MVCApp2 -> WCFAppCommon

ThickClient -> WCFApp2 -> WCFAppCommon

Est-il possible d'effectuer toutes les authentification/autorisation dans le WCFAppCommon? Sinon, je pense que je vais devoir répéter toute la logique de sécurité dans le MVCApps et WCFApp2, alors que, pour moi, il semble s'asseoir naturellement dans WCFAppCommon. D'un autre côté, il semble que si je m'authentifie/autorise dans WCFAppCommon, je ne serais pas capable d'utiliser l'authentification par formulaire. Où j'ai vu des solutions possibles (que je n'ai pas encore essayé), elles semblent beaucoup plus complexes que l'authentification par formulaires et une seule base de données.

Toute aide appréciée,

Phil

Répondre

4

Je pensais que je devrais revenir à cela avec ce que j'ai appris (et réappris). D'abord, la leçon réapprise - ne vous fixez pas sur une architecture, puis essayez de faire en sorte que tout le reste corresponde. Je suis corrigé sur .Net, SQL Server, WCF, MVC2, EF4 et IIS7. Fixant dans mon esprit comment je veux que ceux-ci s'adaptent ensemble est légèrement stupide! Mieux vaut sortir et regarder ce qui existe.

Ce qui me amène à ce que j'appris - voici un lien:

http://wcfsecurityguide.codeplex.com/

Je cet article réduit deux ou trois fois parce qu'il est un peu daté. Cependant, je dirais que c'est en fait très pertinent et si vous commencez un projet à distance de sécurisation des services, jetez un oeil. La partie IV avait tout ce dont j'avais besoin.

1

Nous utilisons l'application Web WCF d'hébergement Système de rapports (nous y accéder de Silverlight) et étant donné qu'il est en utilisant les touches même machine que notre application MVC - nous pouvons partager cookies authentification aussi bien.

Sinon, vous devez envoyer un ticket d'authentification (personnalisé ou non) à votre application WCF.