2010-02-19 4 views
3

Active Directory의 거의 모든 사용자를 쿼리하려고합니다. 일반 사용자가 다양한 OU에 있으므로 해당 사용자를 검색하려고합니다. 그러나 내 시스템 사용자는 Users CN에 저장되어 있으며이를 검색하지 않습니다.LDAP : Active Directory의 하위 CN을 피하기 위해 필터 사용

마치 another question처럼 보입니다. 그러나 그 대답은 저를 도와주지 못했습니다. 나는 here이라는 힌트를 사용하고 있지만 도움을 줄 수는 없습니다.

JNDI를 사용하여 Active Directory에서 쿼리하고 있습니다. 내 질문은 :이 Users 하위 트리에없는 클래스 user의 모든 객체를 의미

(&(objectClass=user)(!(cn:dn:=Users))) 

. 그러나이 쿼리는 다음과 같은 결과를 반환합니다.

CN=__vmware__,CN=Users,DC=SIREDRM,DC=com 

그럼 필터가 작동하지 않는 이유는 무엇입니까? 어떻게 내가 그걸 작동하게 할 수 있니?

답변

7

(! (distinguishedName = *, CN = Users = DC = mydomain, DC = com))이 LDAP 특성의 DN 구문이 [개체 (DS-DN)] 인 특성을 사용하려는 경우, LDAP 필터에는 와일드 카드를 사용할 수 없습니다.

특성 "에 distinguishedName" http://msdn.microsoft.com/en-us/library/ms675516%28VS.85%29.aspx

LDAP 구문 "객체 (DS-DN)"두 번째 링크에서 http://msdn.microsoft.com/en-us/library/ms684431%28VS.85%29.aspx

, 당신은 금지 와일드 카드에 대한 문을 찾을 수 있습니다.

는 일반적으로, 당신은 구문이 같은이

(!(cn:dn:=Users)) 

또는 무언가 유사 할 것입니다 귀하의 경우, 하위 트리 검색에서 약간의 컨테이너를 제외에 대한 LDAP 확장 가능한 일치 규칙을 사용할 수 있습니다. 나쁜 점은 AD가 이러한 종류의 확장 가능한 일치를 지원하지 않는다는 것입니다. http://msdn.microsoft.com/en-us/library/cc223241%28PROT.10%29.aspx 첫 번째 단락을 읽으십시오.

따라서 결론은 다음과 같습니다. 활성 디렉토리 환경에서 하나의 단일 필터로는이 작업을 수행 할 수 없습니다. 죄송합니다.

유일한 해결책은 클라이언트 측 도구를 사용하는 것입니다. Microsoft의 여기 스크립트는 사용자가 원하는 것을 제외하고 사용자가 원하는 것을 정확하게 보여줍니다 (사용자가 아닌 컴퓨터를 원한다는 것을 제외하고). 당신이 볼 수 있었다

http://blogs.technet.com/heyscriptingguy/archive/2004/12/07/how-can-i-return-a-list-of-all-my-computers-except-those-in-a-specified-ou.aspx

다른 것은 당신이 광고를 건드리지 않고 필터 및 사용 권한을 구성 할 수있는 것이다 AD에 대한 프록시 역할을하는 가상 디렉토리입니다.

(대체로 hyphen site에서 복사)

관련 문제