안녕하세요 빛향기고운데입니다.
AD에서 Ldap을 이용하여 사용자계정 Query시에 1000결과값만 반환되는 문제 해결방법입니다.
두가지 방법이 있습니다.
1. AD서버 사이드에서 LDAP정책을 수정하는 방법
2. LDAP조회시 반환대기값을 지정해 주는 방법
방법 1
1. | ldp.exe를 실행합니다. |
2. | [Connection][Connect]를 실행합니다. |
3. | [Connection][Bind]를 실행합니다. |
4. | [Browse][Search]를 선택한 다음 [Base DN:] 에는 ou=members,dc=domainname,dc=com 과 같이 입력한 다음 [필터:] 에는 (objectclass=*) 와 같이 입력합니다. [Scope:] 에는 One Level 을 선택합니다. |
5. | [Options] 버튼을 누른 다음 [Display Results]를 선택하지 않습니다. |
6. | [Run] 한 다음 그 결과는 오른쪽 창에 디스플레이 됩니다. |
방법 2
방법 1은 필터 조건에 맞는 결과가 많지 않을 경우에 사용할 수 있지만, 만약 필터 조건에 맞는 결과가 많을 경우(예를 들면, 한 OU 에 포함되는 모든 사용자 객체의 수가 5000개 일 경우) 옵션들을 적절히 조정해서 사용해야 합니다. AD 서버 사이드에서의 LDAP 정책(MaxPageSize)은 디폴트로 1000 입니다. 아래의 예에서와 같이 설정한 다음 검색을 하면 다음과 같은 의미가 됩니다.- Size limit: 0 ---> Slient-side 에서 Size limit 이 0 라는 의미는 서버 사이드의 ldap 정책인 MaxPageSize를 따른다는 의미입니다.
- Sync ---> Synchronous 방식으로 단 한 번의 ldap_search...()를 합니다.
따라서, 필터 조건에 맞는 결과가 5,000 일 경우 1000 의 결과만 반환 됩니다.
위의 경우와 같이 필터 조건에 맞는 결과가 MaxPageSize 보다 큰 경우 두 가지 방법이 있습니다.
1. | AD 서버 사이드에서 LDAP 정책(MaxPageSize)을 수정 합니다. 이 방법은 AD 서버 사이드에서의 수정이므로 엔터프라이즈 관리자 권한(도메인 관리자권한이 아님)이 있어야 합니다. 엔터프라이즈 정책상 쉽게 수정하기 어려운 부분 입니다. 그러나 이방법의 장점은 단 한 번의 ldp 에서의 ldap_search...()로 올바른 결과를 얻을 수 있습니다. |
2. | 클라이언트 사이드에서 ldp.exe를 사용해서 올바른 결과를 얻기 위해서는 - Timeout(s): 60 ---> ldap_search...()를 실행 후 결과를 반환하기까지 대기하는 시간 60초 - Page size 1000 ---> 페이지당 반환되는 객체 수(서버 사이드MaxPageSize를 넘어서는 안됨) - Paged ---> Paged mode와 같이 설정 후 실행하면 1st ldap_search...() returns 1000 result. 2nd ldap_search...() returns 1000 result. 3rd ldap_search...() returns 1000 result. 4th ldap_search...() returns 1000 result. 5th ldap_search...() returns 1000 result. 6th ldap_search...() returns 0 result. 이 방법의 단점은 AD 서버 사이드에서의 MaxPageSize 가 1000 이므로 만약 결과가 아주 큰 경우 여러 번의 ldap_search...()를 실행해야 한다는 점 입니다. |
http://support.microsoft.com/kb/602259/ko
감사합니다.