Веб-служба .NET, которая принимает идентификатор электронной почты в качестве входного и выполняет поиск в Active Directory - PullRequest
0 голосов
/ 21 февраля 2012

Как написать веб-службу .NET, которая принимает идентификатор электронной почты в качестве входных данных и выполняет поиск в Active Directory, чтобы узнать, существует ли этот пользователь, и возвращает флаг.У меня есть идентификатор пользователя и пароль, который используется для запроса AD.Пожалуйста, опишите, как это сделать и что еще мне нужно?

1 Ответ

1 голос
/ 21 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...