Обработка нескольких доменов для проверки подлинности 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");