Используя 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 и новее.Прочитайте все об этом здесь: