2012-03-22 4 views
0

AD 수준에서 일부 변경 사항으로 인해 응용 프로그램에서 AD의 조회를 변경해야합니다. 이제 검색이 1 대신 2 개의 다른 OU로 실행되어야합니다.LDAP- 검색 2 조직 구성 단위

첫 번째 검색 결과가없는 경우 두 번째 검색을 실행합니다.

2 개의 경로를 1로 결합하여 한 번만 검색해야합니까?

Thx.

using (var de = new DirectoryEntry()) 
{ 
    de.Path = "LDAP://OU=ou1,OU=Users,OU=BE,DC=dc,DC=sys"; 
    de.AuthenticationType = AuthenticationTypes.Secure; 

    var deSearch = new DirectorySearcher 
    { 
     SearchRoot = de, 
     Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))" 
    }; 

    var result = deSearch.FindOne(); 

    if (result == null) 
    { 
     //User not found in ou1 
     de.Path = "LDAP://OU=ou2,OU=Users,OU=BE,DC=dc,DC=sys"; 
     de.AuthenticationType = AuthenticationTypes.Secure; 

     deSearch = new DirectorySearcher 
     { 
      SearchRoot = de, 
      Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))" 
     }; 

     result = deSearch.FindOne(); 

     if (result==null) return null; 
    } 

    using (var deUser = new DirectoryEntry(result.Path)) 
    { 
     //Do something 
    } 
} 
+0

아니요, 2 가지 OU를 동시에 검색 할 수 없습니다. 두 가지 검색을 별도로 수행하고 결과를 결합해야합니다. –

+0

@ marc_s 감사합니다. 나는 그것을 그대로 유지할 것이다. 답변으로 게시하면 Q를 닫을 수 있습니다. – Koen

답변

0

변경 OU=Users,OU=BE,DC=dc,DC=sys에베이스 객체는 동일한 필터를 사용하여 (데이터가 조직 단위에서의 위치에 따라) 또는 subone의 범위를 사용한다. 디렉토리 검색에 대한 자세한 내용은 "LDAP: Using ldapsearch"및 "LDAP: Programming Practices"을 참조하십시오.

+0

나는 내 Q에있는 것처럼 이미 제작에 넣었지만 확실히 살펴볼 것입니다. 감사. – Koen

+0

방금 ​​테스트가 완료되었습니다. 언급 한대로 경로를 변경하고 필터를 그대로 유지했습니다. 이전과 같은 결과를 얻었으므로 효과가 있습니다. 그러나 결과가 위에서 언급 한 OU 중 하나의 일부인지 테스트 할 수있는 방법이 있습니까? 내가 찾을 수있는 최상의 속성은 'distinguishedName - CN = John Doe, OU = Ou1, OU = Users, OU = BE, DC = ds, DC = sys'입니다. – Koen