【发布时间】:2017-11-29 10:20:39
【问题描述】:
我不熟悉这种对 ldap 进行查询的方式。我一直坚持使用 LDAP_MATCHING_RULE_IN_CHAIN ("member:1.2.840.113556.1.4.1941:=....
我已经搜索了信息,我对如何使用它感到困惑。
我有一个 VB sn-p,我试图在其中获取用户所属的所有组,直接或间接。我得到一个空的结果。
我有些事情我不确定,
- 我已将根设置为 AD 的根,对吗?
- 我是否需要指定 ObjectCategory 和 objectClass 才能获得结果,或者它们是否“只是”用于在返回某些内容后缩小结果集?
- 在 LDAP_MATCHING_RULE_IN_CHAIN ("memberOf:1.2.840.113556.1.4.1941:= 我有各种不同的建议来添加对组的引用,但这里的重点是获取组列表,我是否需要指定是否有任何参考组可以使此过滤器起作用?
我正在搜索 AD 中的 CN 用户“AD 用户”,我尝试过其他用户的结果相同(无)
有人看到我在这里做错了吗?
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim adoCommand, adoConnection, strBase, strFilter, strAttributes
Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strName, strCN
' Setup ADO objects.
adoCommand = CreateObject("ADODB.Command")
adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open("Active Directory Provider")
adoCommand.ActiveConnection = adoConnection
' Search entire Active Directory domain.
objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
strBase = "<LDAP://" & strDNSDomain & ">"
' Filter on user objects.
'strFilter = "(&(objectCategory=Person)(objectClass=user)"
strFilter = "(&(objectCategory=Group)"
strFilter = strFilter & "(member:1.2.840.113556.1.4.1941:=(CN=AD User,DC=hnitservice,DC=local)))"
' Comma delimited list of attribute values to retrieve.
strAttributes = "sAMAccountName,cn"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
Do Until adoRecordset.EOF
' Retrieve values and display.
strName = adoRecordset.Fields("sAMAccountName").Value
strCN = adoRecordset.Fields("cn").value
' Wscript.Echo "NT Name: " & strName & ", Common Name: " & strCN
' Move to the next record in the recordset.
adoRecordset.MoveNext
Loop
' Clean up.
adoRecordset.Close
adoConnection.Close
End Sub
【问题讨论】:
-
由于您的标题说:“获取特定用户的活动目录组,使用 LDAP 嵌套”,看来您的查询很好。但是,您的结果将是用户所属的 GROUPS。然后你说:“我正在搜索 AD 中的 CN 用户“AD 用户”,我尝试过其他用户的结果相同“你是在搜索组还是用户?
-
我正在搜索用户所属的组。 AD User 是我正在为其寻找组的用户的名称。所以我需要输入一个用户名并得到一个组列表。
标签: vb.net ldap ldap-query