2010-10-26 19 views
0

je besoin d'aide en suivant :)WCF, le mode de compatibilité ASP.NET et authentification personnalisée à l'aide des fournisseurs d'appartenances

Pour commencer, je travaille sur la grande application qui a un client WinForms et le serveur. Serveur dans notre cas est l'ensemble des services WCF. Un service est responsable de l'authentification des utilisateurs. La logique d'authentification est personnalisée et complexe et le service d'authentification utilise différents fournisseurs d'appartenances.

Nous voulons protéger l'accès aux services du serveur pour les utilisateurs non authentifiés. Les utilisateurs doivent d'abord s'authentifier et utiliser d'autres services (les utilisateurs dans ce cas sont les autres systèmes, services, client WinForms, etc.). Sur cette base, nous avons décidé d'utiliser la fonctionnalité ASP.NET Url/File Authorization.

Alors, je mis sur le mode de compatibilité ASP.NET, autorisé cookie dans toutes les configurations de liaison, a ajouté l'attribut AspNetCompatibilityRequirements à nos services et a ajouté les followingconfigurations à config:

<authentication mode="Forms"> 
     <forms cookieless="UseCookies"> 
     <credentials passwordFormat="Clear" /> 
     </forms> 
    </authentication> 

    <authorization> 
     <deny users="?" /> 
    </authorization> 

    ... 

<location path="AuthenticationService.svc"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

Dans la méthode authenticate de notre authentification le service ajouter le code suivant:

public AuthenticationResult AuthenticateUser(string username, string password) 
{ 
    AuthenticationResult result = new AuthenticationResult(); 
    result = Authenticate(username, password); 

    if (result.IsAuthenticated) 
     FormsAuthentication.SetAuthCookie(username, true); 

    return result; 
} 

Ensuite, je l'ai écrit le code suivant:

var authClient = new AuthenticationServiceClient(); 
var result = authClient.AuthenticateUser("user", "password"); 
var otherClient = new OtherServiceClient(); 
var temp = otherClient.DoSomething();  

Mais après l'authentification, je ne peux pas accéder à OtherServiceClient ...

Alors, comment puis-je partager le contexte d'appel entre les appels de services WCF? Quelqu'un pourrait-il fournir des articles utiles sur cette question?

Merci d'avance! Cordialement.

Répondre

0

Vous devez:

1) Permettre aux sessions WCF

2) en utilisant WCF Authentifier

3) Gardez réutiliser vos procurations au lieu de créer de nouvelles.

Ceci est utile: http://msdn.microsoft.com/en-us/library/ms733040.aspx

+0

Puis-je utiliser l'URL ASP.NET \ fonction d'autorisation de fichier en cas d'authentification WCF? Pourriez-vous s'il vous plaît fournir plus d'informations détaillées à ce sujet? – w1z