고흐의 연구실/Trouble shooting

Oracle과 LDAP의 충돌

전고흐 2022. 1. 15. 22:59
728x90

case)

기존 인증과정에서 pam 모듈을 통해 ldap인증을 하고 있었음.

Oracle db를 지원하기 위해, Oracle 패키지를 추가함.

이후, ldap 인증이 거부됨

- pam 모듈을 사용한 경우 : pam_authenticate에서 Permission Denied

pam 문제로 파악 후, ldap api로 변경

- ldap api를 사용한 경우 : ldap_sasl_bind_s / ldap_simple_bind_s에서 out of memory

추가 확인한 사항은, ldap server 측에서 트래픽을 전혀 받지 않는다는 것.

 

Oracle 패키지를 추가한 이후 발생한 문제이기에, oracle과 ldap의 conflict 사례 조사

유사 사례)

1. Red Hat 6/7 case - libclntsh.so

https://www.linuxfixes.com/2021/11/solved-ldap-connection-ldapsaslbinds.html

 

[SOLVED] LDAP connection ldap_sasl_bind_s gives assertion

Issue So I'm developing an LDAP application on Red Hat 5.5. I've not done LDAP before s...

www.linuxfixes.com

(redirection 주의........ 너무 심해서 사진을 가져왔다.)

OpenLDAP의 libldap.so와 Oracle client library인 libclntsh.so를 링킹 해야 하는 경우 문제가 발생한다.

보통 libldap.so는 liblber.so에 library를 요청한다. 그러나 Oracle과 연동 시 링킹 과정에서 -llber을 추가하지 않으면, liblber.so가 아닌 libclntsh.so에 library를 요청하게 된다.

→ Oracle은 C LDAP API가 구현 되어있음

 

2. libldap / occi conflict case

Conflict between OpenLDAP's libldap and Oracle's occi library

https://stackoverflow.com/questions/9622113/conflict-between-openldaps-libldap-and-oracles-occi-library

 

Conflict between OpenLDAP's libldap and Oracle's occi library

I'm writing a small tool to do some checks on the data from one Oracle database and on LDAP. Thinking of performance I've decided to go with C/C++, therefore I'm using the open ldap library and the

stackoverflow.com

OpenLDAP의 library와 Oracle의 occi library의 충돌 사례 - ldap library가 oracle ldap library에 있는 것으로 사용됨(이름이 같기 때문)

두 library가 모두 공유 library로 구축된 경우, API 진입점 문제 발생

 

해결방안)

LDAP Library linking 과정에서 [-llber] 옵션 추가

링킹 과정에서 ldap library가 lber library를 참조할 수 있도록 함

 

추가 참고 자료)

oracle DB 설치 과정

https://blog.naver.com/killmewild/30103909398

아래 항목은 Oracle DB 설치 과정에서 생략하는 것을 권장 - 오라클과의 충돌이 있을 수 있음

  • Simple Webserver
  • Authentication Server : NIS, LDAP, Kerberos

 

적용 결과)

기존 libldap.so는 liblber.so를 참조하지 않았으나, 링킹 과정 추가 후 참조하게 되었으며, ldap을 이용한 인증 정상 동작.

oracle db 정상 동작.

 

추가적으로 연구해야 할 부분)

제품에서 ldap인증이 두 곳에서 이루어진다.

위의 오류는 oracle db를 통한 로그인 기능을 추가한 부분에서만 발생했다.

모든 ldap인증은 같은 function을 호출한다. 그리고 링킹 과정에서 auth관련 부분에서 ldap과 oracle pkg 옵션을 같이 넣었다.

그렇다면? 왜 오류가 난 부분에서만 oracle의 ldap api를 사용한 것 일까????

계속 찾아보겠지만, 어떻게 무엇을 봐야 하는지 아신다면, 귀띔 부탁드립니다..

 

끝으로)

사례가 많지 않고, 서칭해도 관련 내용이 거의 나오지 않았다.

라이브러리 간의 종속성이 미치는 영향에 대해 처음 직면한 경험이었으며, 새로운 모듈/기능을 도입했을 때 고려해야 하는 범위가 생각보다 넓다는 것을 알게 되었다.

 

 

728x90