Для аутентификации на LDAP или WinNT вам не нужно DirectorySearcher
.Вам нужно только получить NativeObject
из вашего DirectoryEntry
экземпляра.Вот пример кода, который может помочь вам в этом.
public bool Authenticate(string username, string password, string domain) {
bool authenticated = false;
using (DirectoryEntry entry = new DirectoryEntry(@"WinNT://" + domain, username, password) {
try {
object nativeObject = entry.NativeObject;
authenticated = true;
} catch (DirectoryServicesCOMException ex) {
}
}
return authenticated;
}
Этот код вернет либо подлинность пользователя, либо нет.Как только вы можете получить свойство NativeObject, используя этот экземпляр класса DirectoryEntry
, это означает, что AD (или локальный компьютер) использовал олицетворение для получения этого объекта.Если вы получаете объект без выданного исключения, это означает, что AD (или локальный компьютер) смог аутентифицировать олицетворенного пользователя.
В то время как вы можете использовать текущего аутентифицированного пользователя без указания имени пользователя и пароля,но только домен (или локальный компьютер), указав имя пользователя и пароль, вы говорите, что хотите использовать олицетворение, поэтому инфраструктура безопасности будет использовать данное имя пользователя и пароль, чтобы попытаться получить свойство NativeObject
из этого DirectoryEntry
Экземпляр класса.
Для аутентификации в AD просто замените "WinNT://"
на "LDAP://"
.