2017-05-15 5 views
0

J'ai un service WCF, hébergé dans un WindowService, utilisant nettcpbinding dans lequel je souhaite effectuer une vérification dans le code C# si l'expéditeur appartient à un groupe AD spécifique.valider par rapport à un groupe ActiveDirectory d'appelant WCF côté serveur

Est-ce possible? si c'est le cas, comment?

+0

il est possible, mais la mise en œuvre dépend de la topologie de l'application (par ex ample, comment le service est-il hébergé: IIS, service Windows, application console e.t.c., est le client accédant au service dans le même réseau/domaine, est l'authentification Windows Kerberos ou NTLM e.t.c.). –

+0

@lonut Ungureanu - WindowsService (mise à jour de la question) – Joezer

Répondre

1

bien en supposant que le client WCF et le serveur sont sur le même domaine, vous pourriez faire quelque chose comme ça:

Du côté client, vous permettent d'utiliser l'identité Windows pour authentifier le client:

using System.Security.Principal; 
.... 
ServiceReference.ServiceClient client = new ServiceReference.ServiceClient(); 
client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Identification; 

du côté du serveur, vous retrive les fenêtres de identification de l'appelant et tester si elle appartient au groupe:

WindowsIdentity callerWindowsIdentity = ServiceSecurityContext.Current.WindowsIdentity; 
    WindowsPrincipal windowsPrincipal = new WindowsPrincipal(callerWindowsIdentity); 
    var isInRole = windowsPrincipal.IsInRole("Users");