認證

2012-10-12 50 views
0

我可以使用下面的代碼來驗證對Active Directory用戶和正常工作:認證

bool authentic = false; 
PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain); 
// validate the credentials against domain 
authentic = pc.ValidateCredentials(userName, password); 

但是用戶名和密碼被髮送到網絡中平原文本。我被告知要使用ContextOptions.SecureSocketLayerValidateCredentials但它拋出異常

服務器無法處理目錄請求。

任何人都可以請幫助我,以便我可以以安全的方式與LDAP服務器進行身份驗證。

感謝

回答

0

LDAP客戶應該使用SSL或晉升與擴展操作啓動TLS安全連接的非安全連接 - 現代化,專業化品質服務器有權拒絕在非安全連接操作的能力,儘管傳統服務器通常缺乏這種功能。 LDAP是編碼的,而不是加密的,用於傳輸。

請與目錄服務器管理員確認以確保服務器支持SSL(或StartTLS),請檢查所涉及的證書是否有效。考慮使用openssl s_client -connect host:port來驗證連接。

1

我也需要知道這一點。我認爲(但沒有測試過)ContextOptions.Negotiate會使用SSL。您可能需要強制端口到636

PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain + ":636", ContextOptions.Negotiate); 

PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain + ":636", ContextOptions.Negotiate | ContextOptions.Signing | ContextOptions.Sealing); 

EDIT 我有此現在工作(如上述)。我遇到的唯一問題是我試圖連接IP地址。這不起作用,但我不知道爲什麼,直到我看着窗口事件查看器(在客戶端),並且有證書的錯誤。當我更改爲與證書相匹配的servername時,它起作用。