2009-05-19 11 views
0

J'ai un service Web simple grâce auquel la sécurité est gérée via l'authentification basée sur les formulaires.Authentification basée sur les formulaires WCF via l'application Web - Transmission des informations d'identification

WCFTestService.ServiceClient myService = new 
      WCFTestService.ServiceClient(); 
myService.ClientCredentials.UserName.UserName = "user"; 
myService.ClientCredentials.UserName.Password = "secret"; 
lblResult.Text = myService.GetData(1231); 
myService.Close(); 

J'y accède via une application web. Donc, je veux faire ce qui précède une fois mais pour la sécurité/performance ne doit pas le faire à nouveau. Je pensais quelque chose comme le ci-dessous, mais comme j'utilise FormsAuthentication cette ... ne fonctionnera pas

//Obtain the authenticated user's Identity and impersonate the original caller 
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
{ 
    WCFTestService.ServiceClient myService2 = new WCFTestService.ServiceClient(); 
    lblResult.Text = "From Logged On Credentials"+myService2.GetData(1231); 
    myService2.Close(); 
} 

Répondre

1

Qu'est-ce que vous essayez de faire est de mettre en place une « session sécurisée » entre votre client et votre service. C'est un concept qui ne fonctionnera qu'avec le wsHttpBinding - donc si vous n'utilisez pas cette liaison particulière, cela ne fonctionnera pas. Pour établir une session sécurisée, vous devez définir un certain nombre de propriétés de configuration spécifiques dans les fichiers de configuration du client et du serveur - vous pouvez certainement trouver ces paramètres en lisant les docs (recherchez "establishSecurityContext") ou consultez Michele Leroux L'excellent WCF screencast on security fundamentals de Bustumante sur MSDN.

Mais vraiment: je ne recommanderais pas d'essayer d'utiliser la session sécurisée par tous les moyens. Dans des circonstances normales, l'utilisation des services par appel est l'option préférée, et la surcharge pour la ré-authentification avec chaque appel de service est vraiment négligeable.

Marc

Questions connexes