2011-12-08 1 views
0

이 현재 우리는 같은 일을 :개체가 jndi를 사용하여 디렉터리 (LDAP 또는 AD)에 존재하는지 확인하는 방법은 무엇입니까?

Attributes attributes = directoryConnection.find(filter, false); 
if (attributes == null) { 
    // then the object does not exist 
} 

내가이 효율적이지 생각을, 우리는 전체 속성을 검색 할 필요가 없습니다 (그들은 그룹 개체의 경우 몇 thousends 수 ... 개체가 존재하는지 여부를 알고 싶습니다.)

개체가 존재하는지 확인하는 더 좋은 방법은 있습니까? 나는 개체의 cn 또는 그것의 전체 DN을 사용할 수 있습니다.

답변

0

"개체"가 존재하는지 확인하려면 개체를 검색해야합니다. 검색 요청이 구성되어 적어도 :

  • 기본 오브젝트
  • 범위
  • 필터
  • 요청 속성

플러스 같은 크기 제한과 시간 제한과 같은 몇 가지 다른 옵션, 매개 변수, 기타 등등. 객체를 검색하고 1.1 속성을 요청하면 검색 응답에 반환되는 항목 수가 표시됩니다. 리턴 된 항목 수가 0이면 오브젝트가 존재하지 않습니다. 자세한 내용은 "LDAP: ldapsearch""LDAP: Programming Practices"을 참조하십시오.

+1

글쎄, 그 사실을 알고 있지만 내 질문에 어떻게 그 필터를 만들 수 있습니다 또는 jdni를 사용하여 "쿼리"를 수행 할 수 있습니다 ... 나는 그룹을 검색하고 그룹의 cn을 가지고 또는 그룹의 dn, 나는 그룹에서 고유 한 필드를 쿼리 할 수 ​​있다고 생각합니다. 우리가 지금하고있는 일은 필터를 이렇게 만드는 것입니다. filter = "("+ groupCn + ")"; 하지만이 필터가 우리가 할 수있는 최선의 방법은 아니라고 생각합니다 ...하지만 나는 ldap과 ldif에서 꽤 새로운데, 페이지에 대해 구글에서 검색 할 때 페이지는 단순한 평면 ldif 텍스트보다 더 비밀 스럽습니다 ... – cablop

+0

그것을 얻으십시오 ... 그래서 지금 나는 cn 또는 dn과 속성 1.1을 모두 포함하는 것보다 하나의 필터를 만들 필요가 있습니다 ... 만약 하나 이상의 결과가 있다면 ...하지만 그 필터를 만드는 방법을 모르겠습니다. – cablop

+0

필터는'(cn = whatever)'이거나 항목이 속한 objectClass를 알고 있으면'(& (cn = whatever) (objectClass = theKnownObjectClass))'입니다. 요청 된 속성은 다른 매개 변수입니다. –

관련 문제