如何从WCF服务访问Active Directory

时间:2012-07-20 21:23:20

标签: wcf c#-4.0 active-directory

我被要求在WCF中创建一个服务,其中输入是用户EMAIL-ID。我的服务器中有许多域可用。我的WCF服务托管在xxx域中。

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

问题:      1.我们可以从C#连接到Active目录吗?      2.如何从C#获取用户组。      3.它仅用于用户验证,与Active Directory无关。 (在AD组中进行简单搜索)

因为我是新手,所以即使我不知道它是否可以从C#中获取。对此的早期答复非常值得注意。提前谢谢。

1 个答案:

答案 0 :(得分: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 = "your@search.email";

            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);
                }
            }
        }
    }
}