2013-09-01 98 views
1

我試圖使用.NET System.DirectoryServices.Protocols命名空間APIC#連接到Active Directory通過SSL給LDAP服務器不可用

這裏通過SSL連接到Active Directory的是,我已經連接到活動目錄

編寫的代碼段
LdapConnection ldapConnection = new LdapConnection(new LdapDirectoryIdentifier("<ipaddress>:<port>")); 
ldapConnection.AuthType = AuthType.Basic; 

LdapSessionOptions options = ldapConnection.SessionOptions; 
options.SecureSocketLayer = true; 
options.ProtocolVersion = 3; 

X509Certificate cert = new X509Certificate(); 
cert.Import(@"E:\client.crt"); 

ldapConnection.ClientCertificates.Add(cert); 
ldapConnection.Credential = new NetworkCredential("administrator", "xxxxxxxxxx"); 

ldapConnection.Bind(); 
Console.WriteLine("successfully connected"); 

當我試圖執行此代碼段時,我總是得到LDAP服務器不可用的錯誤。我寫了一個相同的JAVA,它可以連接到服務器,所以我認爲證書或活動目錄連接沒有問題。我還能夠連接到Active Directory不使用SSL,使用相同的IP地址和端口389

感謝

+0

嘗試提供連接標識符的協議前綴:「ldaps://192.168.0.101:636」。這應該強制SSL連接。如果這樣做沒有幫助,我認爲證書存在某種問題,因爲這是在「無法聯繫ldap服務器」或通過SSL獲取類似信息時最常見的問題。 –

回答

0
LdapConnection ldapConnection = new LdapConnection(server + ":" + port); 
ldapConnection.AuthType = AuthType.Basic; 
ldapConnection.Credential = new System.Net.NetworkCredential(username, 
                    password); 
ldapConnection.SessionOptions.ProtocolVersion = 3; 
if (sslEnabled) 
{ 
    ldapConnection.SessionOptions.SecureSocketLayer = sslEnabled; 
} 

這是我做的,我可以通過SSL連接到AD。你說你有Java程序通過SSL連接到同一臺服務器。你是否從與你的c#相同的機器上運行Java程序?如果不是,並且在AD中使用自簽名證書,則將該證書安裝到客戶機中並嘗試。

+0

糟糕!對不起,我在回答後看到了發佈的日期。 –

相關問題