2010-12-09 3 views
2

Je n'utilise pas WCF et j'ai besoin d'aide pour configurer la sécurité d'un simple service WCF 4.0. Je veux permettre à un compte d'utilisateur de domaine particulier d'accéder au service et à personne d'autre. J'ai vu un exemple de code où les informations d'identification des comptes sont envoyées via le proxy dans l'application cliente appelant le service, comme ceci: proxy.ClientCredentials.Windows.ClientCredential.UserName = "MyUsername"; proxy.ClientCredentials.Windows.ClientCredential.Password = "MyPassword"; Mais je n'arrive pas à comprendre comment configurer le point de terminaison dans mon service pour accepter cet utilisateur comme seul autorisé à utiliser le service. Voici le code de mon point final:Sécurité WCF 4.0

<endpoint address="" binding="wsHttpBinding" bindingConfiguration="" 
     contract="EvalServiceLibrary.IService1"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
+0

Utilisez-vous l'authentification Windows? –

Répondre

2

Par défaut, votre wsHttpBinding sera en utilisant les informations d'identification de Windows, qui fonctionne très bien dans un environnement intranet LAN/entreprise. Afin de limiter qui peut appeler votre service, vous devez décorer votre classe de service (l'implémentation) avec des restrictions - ceci ne peut pas être fait dans la configuration.

Vous pouvez définir des autorisations principales sur une base par opération (méthode de service) base

public class MyService : IMyServiceContract 
{ 
    [PrincipalPermission(SecurityAction.Demand, User="Domain\\YourUserName")] 
    public void Method1() {...} 
} 

Dans ce cas, seul l'utilisateur Domain\YourUserName peut appeler cette méthode - quelqu'un d'autre aura une exception de sécurité.

En savoir plus sur le Fundamentals of WCF Security - en particulier page 4 où la sécurité basée sur les rôles est abordée. gentleman here a créé un module d'authentification personnalisé qui vous permet d'utiliser les informations d'identification Windows (utilisateurs et rôles) et de définir vos paramètres de sécurité WCF dans votre fichier de configuration.

+0

Marc, merci cela aide beaucoup. Il semble que je vais devoir autoriser un groupe de répertoire actif à accéder au service au lieu d'un individu. Y a-t-il de la décoration pour le service pour les groupes? –

+0

@Russ Clark: Oui, je pense que le nom de groupe '' Role = "' 'devrait fonctionner pour ce scénario, si vous utilisez les informations d'identification Windows. Vous pouvez également appliquer plusieurs de ces attributs pour autoriser plusieurs utilisateurs et plusieurs groupes à autoriser l'appel de la méthode de service –