2013-06-28 55 views
1

我正在尝试使用ADAM和LDAP进行身份验证。我真的没有这方面的经验,但我在工作中深陷困境。使用LDAP对ADAM进行身份验证

这是我所知道的。我正在使用名为JXplorer的程序来查看在我的计算机上的虚拟机上运行的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 

我也试着将用户名更改为JXplorer中用户DN的详细信息。我真的被困在这里,一直在寻找几个小时的答案。

任何帮助,将不胜感激。

回答

0

谢谢Geoff的想法,我终于明白了。事实证明,我需要的连接字符串不包括OU = Users。最后一个字符串结束了 -

LDAP://10.0.0.142:389/DC = TEST,DC = CORP

我不知道为什么它不希望OU =用户。我花了大概一天的时间尝试所有不同的组合,直到最后这个被接受。

0

几乎可以肯定需要userName作为完整的DN。在大多数情况下,ADAM需要完整的DN才能登录。

1

仅供参考,用户是一个容器,而不是一个OU。我相信你也可以使用“LDAP://10.0.0.142:389/CN = Users,DC = TEST,DC = corp”