Ваша проблема в том, что вы используете «простое» имя домена для привязки - это не будет работать в LDAP.На самом деле, если вы пытаетесь привязаться к LDAP://MyDomain
, то, что вы действительно делаете, пытается привязаться к серверу с именем MyDomain
.
Вам нужна правильная строка привязки LDAP - что-то вроде LDAP://dc=yourdomain,dc=local
или что-то в этом роде.
Чтобы узнать, какой у вас контекст привязки LDAP по умолчанию, используйте этот фрагмент кода:
DirectoryEntry deRoot = new DirectoryEntry("LDAP://RootDSE");
if (deRoot != null)
{
string defaultNamingContext = deRoot.Properties["defaultNamingContext"].Value.ToString();
}
Как только вы получите эту строку - используйте ее в качестве строки привязки к вашему серверу LDAP.
А если вы используете .NET 3.5 и выше, вам следует проверить System.DirectoryServices.AccountManagement
(S.DS.AM) пространство имен.Прочитайте все об этом здесь:
По сути, вы можете определить контекст домена и легко находить пользователей и / или группы в AD:
// set up domain context -- no domain name needed, uses default domain
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, username);
if(user != null)
{
// do something here....
}
Новый S.DS.AM позволяет действительно легкопоиграйтесь с пользователями и группами в AD!