.NET Web服务,它将电子邮件ID作为输入并搜索Active Directory?

时间:2012-02-21 03:13:41

标签: asp.net web-services active-directory

如何编写将Web电子邮件ID作为输入的.NET Web服务,并搜索Active Directory以查看该用户是否存在并返回标志。我有一个用于查询AD的用户ID和密码。请描述如何执行此操作以及我还需要什么?

1 个答案:

答案 0 :(得分:1)

使用WCF,您可以非常轻松地实现这一目标。

第1步 - 定义服务合同

这定义了您需要的操作,包括它们可能需要的参数。不知道你可能需要什么,我猜对了,想出了类似的东西:

using System.ServiceModel;

namespace SearchAD
{
    [ServiceContract]
    public interface ISearchADService
    {
        [OperationContract]
        bool EMailAddressExists(string emailAddress);
    }
}

第2步 - 实施服务类

这意味着将“肉”添加到骨骼(服务合同) - 这是您实际执行的操作:

using System;
using System.DirectoryServices.AccountManagement;

namespace SearchAD
{
    public class SearchADService : ISearchADService
    {
        public bool EMailAddressExists(string emailAddress)
        {
            // establish the Active Directory domain context to search in
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", userName, password);

            // define your "query-by-example" user to search for    
            UserPrincipal qbeUser = new UserPrincipal(ctx);
            qbeUser.EmailAddress = emailAddress;

            // instantiate the searcher to find that user    
            PrincipalSearcher findUserByMail = new PrincipalSearcher(qbeUser);

            // search for the user - did we find one?    
            UserPrincipal userByEmail = findUserByMail.FindOne() as UserPrincipal;

            return userByEmail != null;
        }
    }
}

当然,在此设置中 - 您需要从某个位置获取您的域名,用户名和密码(用于查询Active Directory) - 配置文件,服务类中的常量 - 对您有用!

通过这种方式,您基本上可以使用WCF服务获取电子邮件地址,并在Active Directory中搜索与该电子邮件地址匹配的用户帐户。如果找到,则返回true - 否则返回false

现在,使用您的WCF服务,您现在只需要知道如何托管它(在IIS或自托管中),以及如何为其创建客户端以使用该服务 - 但这只是非常基本的WCF专有技术如果您还没有这方面的知识,那么找到必要的信息和教程应该不会有任何问题!

用于搜索Active Directory的机制是System.DirectoryServices.AccountManagement命名空间,它是.NET 3.5及更高版本的一部分。在这里阅读所有相关内容: