2010-02-02 86 views
1

我目前正在編寫一些軟件在C#中,它需要連接到AD服務器並獲取一些用戶詳細信息。當我使用下面的代碼進行連接時,它可以對付我連接到的大多數AD服務器,但有一些地方會出現「登錄失敗:未知用戶名或密碼錯誤」的錯誤。我使用的服務器名稱/憑證是完全正確的,因爲我使用LDAP瀏覽器測試了它們,而AD服務器使用的是標準安全性(端口389等)。任何人都可以提供建議嗎?連接到C#.NET中的Active Directory服務器的問題

乾杯

DirectoryEntry d = new DirectoryEntry("LDAP://" + domain, admin_username, admin_password); 

try 
{ 
    object x = d.NativeObject; 
} 
catch 
{ 
    throw; 
} 

回答

4

我已經在過去的.NET編程/ AD類似的問題。我發現有用的一件事是使用LDAP查看器來查看我是否可以連接到某些服務器等。這樣,我至少可以確定它是否是.NET錯誤(也許是我的代碼),證書錯誤等等。

我使用Softerra的LDAP查看器(http://www.ldapbrowser.com/download.htm)的免費/精簡版版本,雖然我確信還有很多其他人可以從中選擇。如果您嘗試這裏列出的那個,請確保下載「LDAP瀏覽器」而不是「LDAP管理員」。瀏覽器是免費的。

嘗試使用LDAP瀏覽器/查看器連接到您在代碼中遇到的相同LDAP路徑。這至少會作爲第一步確定它是否是.NET /代碼問題。如果您無法通過瀏覽器進行連接,則可以使用連接選項(如端口,域(FQDN)等)來幫助您。

希望這可能有助於縮小範圍。

+0

感謝您的回覆。我實際上一直在使用softerra的ldap瀏覽器來幫助診斷問題,但一直無法找出問題所在。 – tt83 2010-02-02 21:12:01

+0

所以你可以使用ldap瀏覽器進行連接,但不能通過代碼連接到有問題的服務器? – 2010-02-02 21:22:32

+0

事實證明,這是防止Web應用程序與AD服務器通信的防火牆問題 – tt83 2010-02-09 14:19:21

1

Active Directory允許至少三種不同的登錄名樣式:

  1. LDAP - 即LDAP DN。例如:cn = JohnS,ou = Users,dc = example,dc = com
  2. NTLM。例如:EXAMPLE \約翰
  3. Kerberos主體名稱:例如:[email protected]

但是,您不能登錄只有約翰像你的Windows機器做的。這是一個非常常見的錯誤。

相關問題