Мне нужно проверить пользователей в компании, используя только их имя пользователя, а не пароль.Как проверить, существует ли пользователь в LDAP
Так мне нужен способ, как этот
public bool UserExists(string username)
{ ... }
Я отдаю себе отчет в System.DirectoryServices
пространстве имен, но не знаю, с чего начать.
Любые идеи?
Есть 80 000+ записей, поэтому старайтесь нести это в виду.
спасибо.
Edit:
Я сделал это - мой код:
private bool UserExists(string userName, string domain)
{
try
{
DirectoryEntry.Exists("WinNT://" + domain + ".[hidden].com/" + userName);
return true;
}
catch (COMException)
{
return false;
}
}
Я не знаю, если это правильно, но это, кажется, работает до сих пор.
ответ Майкла имеет две соответствующие части:
- http://www.codeproject.com/KB/system/everythingInAD.aspx#22
- http://www.codeproject.com/KB/system/everythingInAD.aspx#35
Update # 2:
я использовал это:
public static bool LoggedOnUserExists()
{
var domain = new PrincipalContext(ContextType.Domain);
UserPrincipal foundUser = UserPrincipal.FindByIdentity(domain, IdentityType.SamAccountName, Environment.UserName);
return foundUser != null;
}
Вы должны ** НЕ ** использовать провайдер WinNT больше - он строго соответствует обратной совместимости, но он, как правило, не работает в сети AD – 2010-11-29 15:47:04