반응형
오늘은 ActiveDirectory의 Ldap query사용시 발생하는
Unbalanced parenthesis; remaining name 에러에 대한 해결 방법에 대해 포스팅 하려고 합니다.
제가 나타났던 이슈는 java에서 ldap lib를 통해 ldap query를 filter를 사용하여 아래와 같이 했을 때
아래와 같은 오류가 나타났습니다.
String filter = "(&(objectclass=pae-VDMProperties)(|(!pae-VDMSecurityServer=*)(pae-VDMSecurityServer=0))(|(!pae-Disabled=*)(pae-Disabled=0)))";
javax.naming.directory.InvalidSearchFilterException: Unbalanced parenthesis; remaining name 'DC=vdi,DC=vmware,DC=int'
at com.sun.jndi.ldap.Filter.findRightParen(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilterList(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeComplexFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilterList(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeComplexFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilterList(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeComplexFilter(Unknown Source)
at com.sun.jndi.ldap.Filter.encodeFilter(Unknown Source)
AD서버에서 ActiveDirectory 또는 LdapAdmin 툴을 사용하여 ldap query를 직접사용하면 문제가 되지 않았습니다.
java에서 ldap query와 AD 서버에서의 ldap 쿼리가 조금 다르다는 것을 알 수 있습니다.
원인 분석을 해보니 ldap query 중간에 있는 (!pae-VDMSecurityServer=*)값을 java에서는 !와 같은 논리 연산자를
괄호 밖으로 한번 더 감싸주어야 제대로 인식 할 수 있었습니다.
(|(!pae-VDMSecurityServer=*) --> (!(pae-VDMSecurityServer=*))
지금까지 LDAP Unbalanced parenthesis; remaining name 에러에 대한 해결 방안 이였습니다.
반응형
'Develope > JAVA' 카테고리의 다른 글
[JAVA] List 합집합, 교집합, 차집합 구하기 (with Value Object) (2) | 2024.04.18 |
---|---|
[JAVA] 자바에서 JSON 만들기 및 JSON 데이터 출력 (0) | 2020.10.11 |
[JAVA] 이클립스(Eclipse) 프로젝트에 라이브러리(lib) 추가하는 방법 (0) | 2019.08.14 |
[JAVA] exe 파일 실행 (0) | 2019.06.10 |
[LDAP] PartialResultException 해결책 (2) | 2019.06.04 |