我正在尝试使用ADAM和LDAP进行身份验证。我真的没有这方面的经验,但我已经被深深地投入工作以解决这个问题。
这就是我所知道的。我正在使用一个名为JXplorer的程序来查看在我的计算机上的VM上运行的ADAM服务器。 Here are the login details
这完美无缺。我想要做的是使用VB.NET复制这个过程。我已经尝试了一堆东西,似乎没有任何工作,我会得到不断的异常,从错误密码到未知错误。这是我开始使用的代码 -
Dim userName As String = "ADAM_TESTER"
Dim userPassword As String = "password"
Dim serverAddress As String = "LDAP://10.0.0.142:389"
Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim de As DirectoryEntry = New DirectoryEntry("LDAP://10.0.0.142:389/OU=Users,DC=TEST,DC=corp", userName, userPassword)
Dim deSearch As DirectorySearcher = New DirectorySearcher()
deSearch.SearchRoot = de
deSearch.Filter = "(&(objectClass=user) (cn=" + userName + "))"
Dim results As SearchResultCollection = deSearch.FindAll()
If (results.Count > 0) Then
Dim d As DirectoryEntry = New DirectoryEntry(results(0).Path, userName, userPassword)
If (d.Guid.ToString IsNot Nothing) Then
'The directory entry is valid
'DoSomething()
End If
End If
我也尝试将上面的userName更改为JXplorer中用户DN中的详细信息。我真的被困在这里,并且一直在寻找答案。
任何帮助都将不胜感激。
答案 0 :(得分:1)
仅供参考,用户是容器,而不是OU。我相信你也可以使用“LDAP://10.0.0.142:389 / CN = Users,DC = TEST,DC = corp”
答案 1 :(得分:0)
几乎可以肯定userName
需要完整的DN。在大多数情况下,ADAM需要完整的DN才能登录。
答案 2 :(得分:0)
感谢Geoff的想法,我最终想通了。事实证明,我需要连接字符串,不包括OU = Users。最后的字符串最终成为 -
LDAP://10.0.0.142:389 / DC = TEST,DC = corp
我不知道为什么它不想要OU =用户。我花了大约一天的时间尝试所有不同的组合,直到最终被接受为止。