LDAP의 경우 DB에 비해 접근하는 API의 표준화가 잘 되어 있기 때문에 vendor 독립적인 LDAP 응용 프로그램을 짜는 것은 큰 문제가 아니었습니다.
한글 문제의 경우도
netscape, aphellion, openLDAP 모두
utf8 인코딩을 해서 올리면 별 문제 없이 돌아갔었죠
하지만 Active Directory의 경우는 문제가 있더군요
디렉토리 스스로 utf8 인코딩을 해버리기 때문에 응용프로그램에서 utf8 인코딩을 해서 올려주면
LDAP_UNWILLING_TO_PERFORM 에러를 내버리고 맙니다.
그래서 제가 생각한 두가지 해결방법은 다음과 같은데요
1. 응용 프로그램 환경 설정에 active directory인지 아닌지를 명시하게 한다.
가장 간단한 해결방법이지만, 설정항목이 하나 추가됨으로써 사용자의 불편함을 야기시키게 되고 LDAP을 사용하는 응용 프로그램마다 이것을 해줘야 한다는 번거로움이 있습니다.
2. rootDSE의 값을 얻어와서 Active Directory인지 아닌지를 알아낸다.
표준적인 방법은 아니지만 rootDSE의 값을 얻어보면 특정 attribute의 값을 통해 active directory인지 아닌지를 대강 알아낼 수 있습니다. 하지만, LDAP에 접근 할 때는 보통 connection을 계속 유지하지 않고 그때그때 접속하는 방식을 취한다는 것을 고려할 때 performance 저하가 뒤따른 다는 문제가 있습니다. 1번 방법에 비해서는 이걸 라이브러리 형태로 만들어둔다면 응용 프로그램마다 코딩하는 번거로움은 줄일 수 있겠지만요.
두 가지 방법 모두 별로 마음에 들지 않는데 혹시 더 좋은 해결책을 알려주시면 감사하겠습니다. |