Аутентификация LDAP с использованием DirectoryEntry - PullRequest
2 голосов
/ 01 августа 2010

Мы используем для аутентификации пользователя в AD, используя следующий конструктор DirectoryEntry:

new DirectoryEntry(path, domainName + "\\" + UserName, Password);

Используется для нормальной работы, пока не был изменен контроллер домена.

Теперь, чтобы заставить его работать, мы должны использовать:

new DirectoryEntry(path,  UserName, Password);

Может кто-нибудь объяснить разницу и почему второй метод работает сейчас, а первый не работает?

Примечание: я не уверен, но думаю, что функциональный уровень домена был повышен до Server 2008 с Server 2003. Имеет ли это значение?

Ответы [ 2 ]

5 голосов
/ 01 августа 2010

Я не знаю точно, почему это когда-либо работало :-), и поэтому я не могу действительно объяснить, почему другой вариант работает сейчас ...

Если вы работаете в .NET 3.5, вы можете использовать пространство имен System.DirectoryServices.AccountManagement и легко проверить свои учетные данные:

// create a "principal context" - e.g. your domain (could be machine, too)
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword")
}

Это просто, это надежно, это 100% C # -управляемый код с вашей стороны - что еще вы можете попросить? : -)

1 голос
/ 12 августа 2013

Обычно путь, используемый для этого, следует этому формату:

DirectoryEntry("LDAP//:domainName");

имя_домена может быть URL-адресом: my.ldapDomain.com

или отличительное имя, например: DC = My, DC = ldapDomain, DC = COM

Боюсь, мы не сможем дать вам больше информации о том, почему ваш код работал раньше и не сейчас, поскольку мы не можем видеть содержимое переменных "path" и "domainName", используемых в вашем коде. *

Пожалуйста, предоставьте больше информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...