2015-04-02 3 views
0

В моем приложении у меня есть следующий метод, по которому я передаю ему имя пользователя (пример: Domain1 \ User1) и попытаюсь найти группы, к которым принадлежит пользователь в Active Directory.Обработка нескольких доменов для проверки подлинности Active Directory

 public ActionResult Login(string userName) 
    { 
     PrincipalContext up = new PrincipalContext(ContextType.Domain); 

     UserPrincipal users = UserPrincipal.FindByIdentity(up,IdentityType.SamAccountName, userName); 

     PrincipalSearchResult<Principal> groups = users.GetGroups(); 
     IEnumerable<string> userGroupList = groups.Select(p =>p.SamAccountName); 
     return userGroupList ; 
    } 

код работает отлично, однако я предполагаю, что этот код будет failto работать в среде, где существует несколько доменов. Например: 1) Пользователь попытаться войти в систему с (Domain1 \ User1), и он будет проходить, 2) Пользователь попытаться войти в систему с (домен2 \ Пользователю2) приложение будет пытаться искать Пользователь2 в Domain1, и поскольку в домене 1 такого пользователя нет, он не удастся.

Это правда? если да, то как я могу решить эту проблему, чтобы она работала с несколькими доменами?

ответ

0

Мне нужно было передать доменное имя в качестве второго параметра при попытке создать экземпляр нового объекта PrincipalContext. Сделав это, я смог получить группы пользователей с несколькими доменами. Таким образом, код будет примерно таким:

 PrincipalContext up = new PrincipalContext(ContextType.Domain,"DomainName"); 
Смежные вопросы