2014-05-13 11 views
3

저는 LDAP를 처음 사용하고 .Net을 사용하여 LDAP 서버에 연결하여 사용자 자격 증명의 유효성을 검사하려고했습니다. 다음 코드는 오류를 반환합니다.LDAP를 사용하여 자격 증명의 유효성을 검사 할 수 없습니다.

The LDAP server is unavailable

그러나 유효성 검사는 Java 코드에서 올바르게 작동합니다. 친절하게 내가 잘못한 곳을 알려주십시오. 모든

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://192.168.65.201:389/DC=be,DC=ndl,DC=CompanyName,DC=com")) 
{ 
    bool a= pc.ValidateCredentials("[email protected]","password"); 
} 
+0

는 LDAP 서버에 액세스 할 수있는 코드 변경 : 하여 DirectoryEntry 항목 = 새로운하여 DirectoryEntry (ldapPath, txtUsername.Text.ToString을()() txtPassword.Text.ToString를() 트림 트림()..) 개체 obj = entry.NativeObject; DirectorySearcher search = 새 DirectorySearcher (항목); – psobhan

답변

3

첫째 - PrincipalContext은뿐만 아니라 다른 LDAP 서버에 대해, Active Directory에에 대해 작동합니다.

둘째 : 생성자에 잘못된 매개 변수를 지정하고 있습니다. PrincipalContext에서 사용할 수있는 생성자는 Check out the MSDN docs입니다.

당신은 PrincipalContext 당신이 연결되어있는 현재 도메인에 구성되어있는 경우에 단지 ContextType 매개 변수를 정의 할 수 있습니다 :

var ctx = new PrincipalContext(ContextType.Domain); 

또는 당신이를 의미 번째 문자열 매개 변수가있는 생성자를 사용 할 수 있습니다 도메인의 도메인 이름 ( 도메인 이름 - 하지 완전한 LDAP 경로!) :

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com"); 

그러면 루트 수준의 특정 도메인에 연결됩니다. 당신이 얻을 수있는 올바른 매개 변수를 적절한 생성자를 찾아 제공해야합니다 그래서

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com", 
           "CN=Users,DC=be,DC=ndl,DC=CompanyName,DC=com"); 

:에

또는 셋째, 당신은 연결 해당 도메인에 용기을 정의하는 세 번째 매개 변수를 지정할 수 있습니다 이 작동하려면 Active Directory를 사용하는 경우.

+0

감사합니다 화성 : PrincipalContext를 사용하여 LDAP 서버에 연결하려고한다는 것을 깨닫지 못했습니다. – psobhan

관련 문제