2010-05-13 3 views
2

지정한 도메인에 이러한 사용자 이름이 있는지 확인하여 LDAP 사용자의 유효성을 검사해야합니다.Active Directory 로그인 - DirectoryEntry 일관성없는 예외

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController); 
DirectorySearcher searcher = new DirectorySearcher(entry); 
searcher.Filter = "SAMAccountName=" + strUserName; 
SearchResult result = searcher.FindOne(); 
return (result != null) ? true : false; 

이 내가 참조하고 나는 내 프로젝트에서이 기능이 필요 whereever 사용 intened 클래스 라이브러리의 방법입니다 -이를 위해이 코드를 사용하고 있습니다.

이것을 테스트하기 위해 간단한 테스트 응용 프로그램을 만들었습니다. 시험은 다음과 같이 발생 -

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString()); 

내가 직면하고 문제는 이것이 내가 동일한 자격 증명과 같은 방법을 사용하려고 할 때, 내 testapp를 함께하지만 내 프로젝트에서 테스트 할 때 잘 작동합니다 - DirectoryEntry 개체가 "System.DirectoryServices.DirectoryServicesCOMException" 예외를 throw하고 search.Filter이 실패하고 ex = { "로그온 실패 : 알 수없는 사용자 이름 또는 잘못된 암호입니다. \ r \ n"} 예외가 발생합니다.

나는 가장을 시도했지만 도움이되지 않습니다. 어떻게 든 mytestapp에서 똑같은 메서드가 제대로 작동하고 내 프로젝트에서는 작동하지 않습니다. 이 두 응용 프로그램은 모두 내 로컬 컴퓨터에 있습니다. 내가 뭘 놓치고 있니? 어떤 아이디어?

답변

1

나는 모든 스레드에서 찾을 수있는 거의 모든 가능한 해결책을 시도했지만 여전히 해결할 수 없었습니다.

전체 내용을 다시 시도한 다음 작동했습니다. 내 프로젝트가 아니라 내 테스트 응용 프로그램에서 작동하는 이유는 프로젝트가 네트워크 위치에 저장되었고 테스트 응용 프로그램이 PC의 하드 드라이브에 저장되었다는 것입니다.

내 프로젝트를 내 PC의 하드 드라이브에 복사하면 프로젝트가 제대로 시작되었습니다. 내 생각에 프로젝트가 네트워크에 위치하고 있기 때문에 LDAP 유효성 검사에 충분한 권한이 부여되지 않았을 수 있습니다.

+0

당신은 impersonnation 또는 현재 Windows 사용자를 사용하고 있습니까? –

+0

가장을 사용하고 있습니다. – pavanred

0

테스트 응용 프로그램과 실제 응용 프로그램이 동일한 사용자로 실행되고있어 AD에서 동일한 권한을 가지고 있습니까? DirectoryEntry 객체에 의해 던져진 예외는 문제를 해결하기가 어렵지만, 이것이 내가 확인하는 첫 번째 것이다. 어떤 종류의 프로젝트입니까? 웹 앱 또는 데스크톱 앱입니까? 웹 앱인 경우 앱 풀을 실행하는 사용자에게 필요한 권한이 없을 수 있습니다.

+0

내 테스트와 프로젝트 모두에서 동일한 사용자를 사용하고 있습니다. 프로젝트는 웹 앱입니다. 동일한 권한이 한 앱에서 작동하는 경우 다른 앱에서 권한을 보유해야합니다. 저를 이겼습니다 .. – pavanred