[active-directory] Active Directory LDAP查询(按sAMAccountName和Domain)


Answers

您可以使用以下查询

登录名(Pre-Windows 2000)等于John的用户

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(sAMAccountName=**John**))

全部用户

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370))

启用用户

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(!userAccountControl:1.2.840.113556.1.4.803:=2))

已禁用用户

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(userAccountControl:1.2.840.113556.1.4.803:=2))

LockedOut用户

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(lockouttime>=1))
Question

如何通过sAMAccountName和Domain对LDAP存储进行查询? 什么是在Active Directory或LDAP条款中命名的“域”属性?

这是我迄今为止的过滤器。 我想能够在域中添加:

(&(objectCategory=Person)(sAMAccountName=BTYNDALL))



“域”不是LDAP对象的属性。 它更像是存储对象的数据库的名称。

因此,您必须连接到正确的数据库(以LDAP的形式: “绑定到域/目录服务器” )才能在该数据库中执行搜索。

一旦成功绑定,您的查询就成为当前的形状。

顺便说一句:在"ObjectClass=user"选择"ObjectCategory=Person" "ObjectClass=user"是一个很好的决定。 在公元前,前者是一个表现优异的“指数化财产”,后者没有被索引,而是慢一点。




如果您使用.NET,请使用DirectorySearcher类。 您可以将您的域作为字符串传入构造函数。

// if you domain is domain.com...
string username = "user"
string domain = "LDAP://DC=domain,DC=com";
DirectorySearcher search = new DirectorySearcher(domain);
search.Filter = "(SAMAccountName=" + username + ")";



Links