使用LDAP对ADAM进行身份验证

时间:2013-06-28 19:49:23

标签: vb.net ldap adam

我正在尝试使用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中的详细信息。我真的被困在这里,并且一直在寻找答案。

任何帮助都将不胜感激。

3 个答案:

答案 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 =用户。我花了大约一天的时间尝试所有不同的组合,直到最终被接受为止。