Обработка нескольких доменов для проверки подлинности Active Directory

В моем приложении у меня есть следующий метод, который я передаю ему имя пользователя AD (пример: Domain1\User1) и пытаюсь найти группы, к которым принадлежит пользователь, в 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 ;
    }

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

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

1 ответ

Решение

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

      PrincipalContext up = new   PrincipalContext(ContextType.Domain,"DomainName");
Другие вопросы по тегам