2013-06-28 89 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」