2012-07-20 35 views
1

我被要求在WCF中创建一个服务,其中输入是用户EMAIL-ID。我的服务器中有很多可用的域。我的WCF服务托管在xxx域中。如何从WCF服务访问活动目录

I need to get all yyy groups (Domain groups) for the user whose email matches. 

问题: 1.我们可以连接到Active Directory从C# 2.如何从C#的用户群体。 3.它只是用于用户验证,与Active Directory无关。 (在AD组中简单搜索)

由于我对此很陌生,即使我不知道它是否可以从C#中获得。对此的早期回复非常可观。提前致谢。

回答

0

System.DirectoryServices.AccountManagement命名空间正是你所需要的。

下面是一些应该让你开始的代码。

using System; 
using System.DirectoryServices.AccountManagement; 

namespace TestADCSharp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      PrincipalContext p = new PrincipalContext(
       ContextType.Domain, 
       "your.domain" 
      ); 

      UserPrincipal u = new UserPrincipal(p); 
      u.EmailAddress = "[email protected]"; 

      PrincipalSearcher ps = new PrincipalSearcher(u); 
      PrincipalSearchResult<Principal> results = ps.FindAll(); 

      foreach (Principal r in results) { 
       PrincipalSearchResult<Principal> groups = r.GetGroups(); 

       Console.WriteLine("Groups:"); 
       foreach (Principal g in groups) { 
        Console.WriteLine("\t" + g.Name); 
       } 
      } 
     } 
    } 
} 
+0

嗨bhamby,感谢代码.. :)它给了我结果。但是当试图执行GetGroups()时,它会引发错误“登录失败:未知用户名或错误密码”。你能指导我在哪里给认证的凭据...非常感谢...干杯 – BlueMoon 2012-07-20 22:22:21

+0

看看[在此](http://msdn.microsoft.com/en-us/library/bb341016.aspx )。 – bhamby 2012-07-20 22:29:09