2016-01-15 118 views
-1

在本網站的答案線索中找到了文檔(here),但我無法獲得與AD的連接。當我使用像Active Directory Explorer這樣的程序時,我可以連接。我想,因爲我試圖連接到一個LDAPS,我需要一個不同的方法?如何通過C#中的LDAPS連接到Active Directory?

我有服務器的IP,域名,用戶名/密碼和端口636. 我試過各種組合@new DirectoryEntry,但無法獲取它連接。總是得到一個COMException Domain is not existing

static DirectoryEntry createDirectoryEntry() 
    { 
     DirectoryEntry ldapConnection = new DirectoryEntry("LDAP://192.168.2.59", USER, PWD); 

     ldapConnection.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; 

     return ldapConnection; 
    }    

背景的相關信息: 用戶將他卡讀卡器單位。 Porgram從卡上獲取ID並在數據庫中搜索該ID並返回屬於該ID /用戶 的電子郵件地址。 在這裏工作的解決方案:

 private string getEmail(string userID) 
    { 
     try 
     { 
      string ldapfilter = "(&(otherPager=" + userID + "))"; 

      DirectoryEntry myLdapConnection = new DirectoryEntry("LDAP://" + SERVER, USER, PWD); 
      DirectorySearcher search = new DirectorySearcher(myLdapConnection); 
      search.Filter = ldapfilter; 

      /*search.PropertiesToLoad.Add("mail"); 
      SearchResult result = search.FindOne();*/ 

      string[] requiredValue = new String[] { "mail" }; 

      foreach (String value in requiredValue) 
       search.PropertiesToLoad.Add(value); 

      SearchResult result = search.FindOne(); 

      if (result != null) 
      { 
       foreach (String value in requiredValue) 
        foreach (Object myCollection in result.Properties[value]) 
        { 
         return myCollection.ToString(); 
        }  
      } 
      else 
      { 
       return "No Entry fround"; 
      } 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Exception Problem: " + e.ToString()); 
      return null; 
     } 
     return null; 
    } 



    private void cmdClose_Click(object sender, EventArgs e) 
    { 
     Close(); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     label1.Text = getEmail(textBox1.Text); 
    } 
+0

嘗試更像「LDAPS:// :636/DC = example,DC = com」 – jwilleke

回答

2

你需要指定的端口,因爲636是默認端口LDAPS。

new DirectoryEntry("LDAP://192.168.2.59:636", USER, PWD) 

我在我的一些代碼中使用「LDAP://」(而不是「LDAPS://」)是有效的。

如果這不起作用,那麼可能有證書錯誤。您可以使用瀏覽器進行測試。如果您使用Chrome,打開Chrome這個(所以它可以讓你使用端口636):

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --explicitly-allowed-ports=636 

然後去https://192.168.2.59:636。如果您遇到很大的花哨的證書錯誤,那麼問題是證書不可信。查看來自Chrome的證書並查看問題所在。它可以由不在Windows證書存儲中的授權機構頒發。

+0

thx非常讓它工作。 我更新了我的代碼以上其他人有同樣的問題。 也許你/有人可以看看它,並給我反饋如何改善代碼/性能等?欣賞它 –

相關問題