当前位置:  开发笔记 > 编程语言 > 正文

sAMAccountName和Domain的Active Directory LDAP查询

如何解决《sAMAccountName和Domain的ActiveDirectoryLDAP查询》经验,为你挑选了4个好方法。

如何通过sAMAccountName和Domain查询LDAP存储?在Active Directory或LDAP术语中命名的"域"属性是什么?

到目前为止,这就是我对过滤器的要求.我希望能够在域中添加:

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

Dscoduc.. 21

首先,修改您的搜索过滤器,仅查找用户而非联系人:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=BTYNDALL))

您可以通过连接到配置分区并枚举分区容器中的所有条目来枚举林的所有域.对不起,我现在没有任何C#代码,但这里是我过去使用的一些vbscript代码:

Set objRootDSE = GetObject("LDAP://RootDSE")
AdComm.Properties("Sort on") = "name"
AdComm.CommandText = ";" & _
        "(&(objectcategory=crossRef)(systemFlags=3));" & _
            "name,nCName,dnsRoot;onelevel"
set AdRs = AdComm.Execute

从那里你可以检索每个分区的名称和dnsRoot:

AdRs.MoveFirst
With AdRs
  While Not .EOF
    dnsRoot = .Fields("dnsRoot")

    Set objOption = Document.createElement("OPTION")
    objOption.Text = dnsRoot(0)
    objOption.Value = "LDAP://" & dnsRoot(0) & "/" & .Fields("nCName").Value
    Domain.Add(objOption)
    .MoveNext 
  Wend 
End With

'With'和'While'语句看起来很可怕.我想我很久以前写过这篇文章并且不需要更新它,因为它刚刚奏效...... (2认同)


kombsh.. 14

您可以使用以下查询

登录名(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))


sorin.. 8

搜索用户最佳方式是.(sAMAccountType=805306368)

或者对于残疾用户:

(&(sAMAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=2))

或者对于活跃用户:

(&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

我觉得LDAP本身并不是那么轻松.

也是常见LDAP查询的资源- 试图自己找到它们,你会花费宝贵的时间并且肯定会犯错误.

关于域:在单个查询中不可能,因为域是user distinguisedName(DN)的一部分,在Microsoft AD上,不能通过部分匹配进行搜索.



1> Dscoduc..:

首先,修改您的搜索过滤器,仅查找用户而非联系人:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=BTYNDALL))

您可以通过连接到配置分区并枚举分区容器中的所有条目来枚举林的所有域.对不起,我现在没有任何C#代码,但这里是我过去使用的一些vbscript代码:

Set objRootDSE = GetObject("LDAP://RootDSE")
AdComm.Properties("Sort on") = "name"
AdComm.CommandText = ";" & _
        "(&(objectcategory=crossRef)(systemFlags=3));" & _
            "name,nCName,dnsRoot;onelevel"
set AdRs = AdComm.Execute

从那里你可以检索每个分区的名称和dnsRoot:

AdRs.MoveFirst
With AdRs
  While Not .EOF
    dnsRoot = .Fields("dnsRoot")

    Set objOption = Document.createElement("OPTION")
    objOption.Text = dnsRoot(0)
    objOption.Value = "LDAP://" & dnsRoot(0) & "/" & .Fields("nCName").Value
    Domain.Add(objOption)
    .MoveNext 
  Wend 
End With


'With'和'While'语句看起来很可怕.我想我很久以前写过这篇文章并且不需要更新它,因为它刚刚奏效......

2> kombsh..:

您可以使用以下查询

登录名(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))



3> sorin..:

搜索用户最佳方式是.(sAMAccountType=805306368)

或者对于残疾用户:

(&(sAMAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=2))

或者对于活跃用户:

(&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

我觉得LDAP本身并不是那么轻松.

也是常见LDAP查询的资源- 试图自己找到它们,你会花费宝贵的时间并且肯定会犯错误.

关于域:在单个查询中不可能,因为域是user distinguisedName(DN)的一部分,在Microsoft AD上,不能通过部分匹配进行搜索.



4> Tomalak..:

"域"不是LDAP对象的属性.它更像是存储对象的数据库的名称.

因此,您必须连接到正确的数据库(在LDAP术语中:"绑定到域/目录服务器")才能在该数据库中执行搜索.

成功绑定后,您所需要的查询就是当前形状.

BTW:选择"ObjectCategory=Person""ObjectClass=user"是一个很好的决定.在AD中,前者是具有优异性能的"索引属性",后者没有索引且稍微慢一些.


为了查询AD中的用户,我喜欢使用sAMAccountType = 805306368,因为这会特别缩小搜索范围并且速度很快
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有