如何编写将Web电子邮件ID作为输入的.NET Web服务,并搜索Active Directory以查看该用户是否存在并返回标志。我有一个用于查询AD的用户ID和密码。请描述如何执行此操作以及我还需要什么?
答案 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及更高版本的一部分。在这里阅读所有相关内容: