2022.05.16 - [Jenkins] LDAP 연동에서 정리한 내용대로 설정값을 입력한 뒤 테스트를 했더니 에러가 발생했다.
입력한 설정값은 대충 아래와 같다. (보안 문제로 블로그 글에서는 적당히 변경하여 작성한다.)
- Server : 192.168.10.45
- root DN : OU=CDX부문(000000),OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net
- User search filter : cn={0}
- Manager DN : tistory.help@tistory.com
- Manager Password : 비밀번호
테스트 결과
검색해보니 'LDAP: error code 32 - 0000208D: NameErr: DSID-0310020A, problem 2001 (NO_OBJECT), data 0, best match of:' 이라는 오류 코드와 에러 메시지는 AD 서버에서 CN=tistory.help@tistory.com,OU=CDX부문(000000),OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net라는 DN(DistinguishedName)이 존재하지 않거나 인식되지 않을 때 발생한다고 한다.
이 메세지는 전체 DN 트리와 관계가 있으며, 아래 목록 중 하나가 존재하지 않는다는 것을 의미한다.
- DC=net
- DC=CDX,DC=net
- OU=CDX Users,DC=CDX,DC=net
- OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net
- OU=CDX부문(000000),OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net
- CN=tistory.help,OU=CDX부문(000000),OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net
해결 방법
1. JXplorer와 같은 LDAP 브라우저를 이용하여 전체 DN이 정확한지 확인한다.
2. 정책 상 가능하다면 root DN 정보를 변경할 수 있다.
예시의 메시지에서는 OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net라는 DN까지는 확인되었다. 따라서 확인된 값으로 root DN을 설정한다.
3. Root DN에 한글이 포함되어 있을 때, error code 32 에러가 발생하는 경우 Jenkins Encoding을 확인해보도록 한다.
ANSI로 되어있다면 한글 인식이 되지 않아 Root DN 인식을 못 할 수 있다. 이 때는 UTF-8로 변경하도록 한다.
참고 : https://stackoverflow.com/questions/46112011/how-set-encodings-in-jenkins-to-utf-8
정상적으로 동작한다면 아래와 같은 출력을 얻을 수 있다.
참고 문서
https://stackoverflow.com/questions/24485722/java-ldap-error-no-object
https://confluence.atlassian.com/stashkb/ldap-error-code-32-659785640.html