【发布时间】:2018-09-06 14:30:46
【问题描述】:
我对 LDAP 完全陌生,我需要在我的办公室 LDAP 中检索一些信息,没有人来帮助我。 这是我得到的信息(出于安全原因,我稍作更改):
- 主机:.ldap.host
- 搜索库:ou=People,dc=xxx,dc=yyyy,dc=zzzzz
- 过滤器:(projectTeams=manager)
- 用户:uid=eric, ou=Technical,dc=xxx,dc=yyyy,dc=zzzzz
- 密码:blabla
这就是我找到所有“经理”的全部工作
这是我的代码:
Dim oRoot2 As DirectoryEntry = New DirectoryEntry ("LDAP://the.ldap.host", "uid=eric,ou=Technical,dc=xxx,dc=yyyy,dc=zzzzz", "blabla",AuthenticationTypes.None)
try
Dim connected As Object = oRoot2.NativeObject
msgbox "Connected"
Dim searcher As DirectorySearcher = New DirectorySearcher(oRoot2)
searcher.Filter = "(projectTeams=manager)"
Dim DirEntry As DirectoryEntry
For Each result As SearchResult In searcher.FindAll
DirEntry = result.GetDirectoryEntry
lst.Items.Add(DirEntry.Properties("iam-uid").Value)
Next
catch ex as exception
msgbox (ex.message)
End try
运行时,我收到“已连接”消息框,但随后出现错误“服务器上没有此类对象”。执行以下行时会引发此错误:
For Each result As SearchResult In searcher.FindAll
我不知道如何编码搜索库是“ou=People,dc=xxx,dc=yyyy,dc=zzzzz”
我已经花了两天时间尝试。欢迎所有帮助。
【问题讨论】:
-
尝试添加一些调试步骤。将部分包装在 Try/Catches 或 IF 语句中可能有助于深入了解问题所在。此链接可能有助于 Try/Catch:docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/…
-
谢谢,我编辑帖子以解释错误发生在哪一行。
-
过去我使用以下方法将结果加载到搜索结果集合中:Dim result As SearchResultCollection = searcher.FindAll()。然后你会做你的 For Each res As SearchResult In 结果。查看此链接以获取示例:visual-basic-tutorials.com/Tutorials/Controls/…
-
另外 - 你有 "uid=eric,ou=Technical,dc=xxx,dc=yyyy,dc=zzzzz" 这是行不通的,因为你没有在这里查看 OU,你需要删除 uid 部分,以便您只剩下要搜索的基本 ou。我的猜测是:ou=Technical,dc=xxx,dc=yyyy,dc=zzzzz
-
如果我去掉uid部分,如何设置连接登录?