2010-07-07 4 views
1

J'ai une application Web asp.net mvc 2 qui se connecte à un service Web WCF hébergé dans IIS. C'est dans un environnement intranet utilisant l'authentification Windows. J'ai besoin d'authentifier l'utilisateur qui se connecte à l'application Web à l'intérieur de mon service WCF, mais le WCF ne peut pas voir qui s'est connecté à l'application Web.Quelle est la meilleure façon d'authentifier les utilisateurs Web à partir de WCF provenant d'une application Web ASP.Net?

Cela ne peut pas être un nouveau problème, alors comment certains d'entre vous ont-ils résolu ce problème?

Répondre

1
+0

le seul moyen d'obtenir l'appelant d'origine via TCP? Je veux utiliser HTTP –

0

Une session partagée est-elle une option?

WCF offre un attribut (AspNetCompatibilityRequirements) qui (vraisemblablement entre autres) rend l'état de session ASP.net compatible. Cela vous permet à son tour d'utiliser une gestion d'état de session hors processus pouvant être partagée entre des applications.

Vous pouvez activer cette utilisant

[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed] 

Et puis dans votre configuration

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    ... 
</system.serviceModel> 

Si vous allez la route SQL Server, je l'ai écrit this un certain temps. C'est le partage entre asp.net et un service asmx, mais du côté de SQL Server, j'imagine que les choses sont les mêmes. Fondamentalement, vous devez faire en sorte que SQL Server reconnaisse les deux parties du système comme la même application. WCF utilise également les mêmes fournisseurs d'appartenances que ASP.net, ce qui vous permet de faire quelque chose comme ça.

+0

C'est pas vraiment une option, du moins pas pour l'instant ... Je vais certainement garder cela à l'esprit pour l'avenir. –

+0

Ai-je raison de supposer que "WCF ne peut pas voir qui est connecté à l'application Web" signifie qu'il ne peut pas accéder à tout support que vous utilisez actuellement pour l'authentification? – AlexCuse

+0

Eh bien, cela signifie qu'il voit le compte qui exécute l'application Web comme le compte authentifié, et non l'utilisateur d'origine qui a accédé à l'application Web. –

0

Si vous utilisez l'authentification Windows, une option peut être d'utiliser la délégation pour transmettre l'identité de l'appelant de l'application Web au service WCF.

+0

Comment? Je n'ai pas réussi à faire fonctionner ça. –

+0

Ce lien vers MSDN contient de très bonnes informations que vous devriez pouvoir utiliser: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/16d5406f-ebd7-41d2-a323-3530703497cd – ChrisNel52

Questions connexes