2009-12-01 6 views
2

Мне нужно аутентифицировать учетные данные пользователя Windows, учитывая пользовательский домен, домен и пароль. Наш Active Directory содержит несколько доменов, некоторые из которых мы можем перечислить используя следующий код:Аутентификация пользователя в глобальном каталоге

var domains = System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest().Domains; 

Однако, у нас также есть пользователи, которые принадлежат к доменам вне леса. Однако они доступны мне из Глобального каталога (GC). Ниже код позволяет мне получить запись каталога для идентификатора пользователя.

System.DirectoryServices.DirectoryEntry globalCatalogDE = new System.DirectoryServices.DirectoryEntry("GC://DC=nsroot,DC=net"); 
var ds = new System.DirectoryServices.DirectorySearcher(globalCatalogDE); 
ds.Filter = "(&(objectClass=user)(sAMAccountName=" + userId + "))"; 
System.DirectoryServices.DirectoryEntry userDE = ds.FindAll()[0].GetDirectoryEntry(); 

Как аутентифицировать пользователя, принадлежащего домену, к которому я не могу напрямую обращаться, но доступен мне в GC?

ответ

3

Вы не можете аутентифицировать пользователя, просмотрев глобальный каталог, он предназначен только для поиска (любой атрибут, помеченный как isMemberOfPartialAttributeSet в схеме для каждого домена, реплицируется в GC).

Пароли не копируются на него; в противном случае у вас будут пароли всех пользователей во всем forrest на каждом контроллере домена, что было бы очень плохо с точки зрения безопасности и репликации. Вам необходимо установить соединение с доменом, в котором хранятся учетные данные пользователя (т. Е. Вам нужен доступ к портам 389 или 636 LDAP).

+0

Звучит достаточно разумно для меня, чтобы отметить как ответ, даже если он не решит мою проблему. –

Смежные вопросы