성냥
1k
2018-10-01 12:00:55 작성 2018-10-01 12:04:41 수정됨
1
762

스프링에서 테이블조회 결과에 LDAP 데이터를 추가


안녕하세요, 프로젝트 진행 중 궁금한 것이 생겨 질문을 올리게 되었습니다.


현재 제가 참여한 프로젝트(웹)에서는 스프링 부트 2.0 버전을 사용하고 있습니다.


사용자 인증은 LDAP 를 사용하고 있고, 사용자의 인가(권한) 및 애플리케이션에서 사용할 자체 데이터는 RDB(sql server)를 사용하고 있습니다. Spring Data JPA와 Spring LDAP를 함께 활용하구요.


현재 LDAP를 통한 인증, RDB를 통한 인가는 문제없이 잘 동작하고 있습니다.


RDB에는 사용자의 아이디만 저장 가능한 상태인데요. 화면상에는 RDB 자체 데이터와 더불어 저장된 아이디와 매칭되는 사용자의 이름을 비롯한 상세정보가 화면상의 그리드에 함께 출력되어야 합니다. 


보통 RDB 테이블만 사용한다면, 조인을 걸어 간단하게 출력할 데이터와 사용자 정보를 묶을수 있는데요. 현재 테이블에는 아이디만 저장되어 있고, 사용자의 상세정보는 LDAP에 검색을 통해서만 가져올 수 있습니다.


일단 구글신 검색을 통해 RDB에 LDAP 접근과 관련된 설정을 하면 SQL문으로 LDAP 데이터를 조인하는 듯한 기능구현이 가능하다고는 알고 있습니다만, JPA 기반으로 프로젝트가 진행되고 있어 LDAP와 관련된 복잡한 쿼리를 사용하는 것도 만만치 않고, 방법을 찾는다 하여도 현재 프로젝트에서는 RDB가 직접 LDAP에 접근하기 위한 권한을 받을수 없기 때문에, RDB가 LDAP 데이터를 직접 조인(?)하는 방식의 사용은 불가능합니다.


JPA를 통해 조회한 테이블 데이터에서 사용자 아이디를 꺼내서 매번 LDAP 검색을 직접 구현하고, 검색되온 사용자 정보를 다시 조립하여 프론트로 보내는것은 뭔가 석연치 않아서요.


테이블 데이터가 몇만건 수준이고, 해당 테이블에 사용자 아이디를 저장하는 컬럼이 5개 남짓 되는 상태라, 매번 테이블에 조회된 수만건에 달하는 아이디로 사용자정보를 직접 코딩하여 LDAP에서 꺼내오고, 데이터에 붙이는 것이 성능에 좋지 않을것 같아 망설여집니다.


Spring Data JPA/LDAP 에 기능을 사용해서 jpa entity, ldap entry 에 1:n, n:1 관계를 맺어주는 식의 해결 방법이 있을까요? 아니면 혹시 제가 생각하는 혹은 구하려는 방법 외에 좋은 방법이 있다면 가르침을 부탁드리려 합니다. 감사합니다.


0
0
  • 답변 1

  • 성냥
    1k
    2018-10-02 13:08:27

    동일한 문제로 혹시 해결책을 찾을수 있을까 싶어, stackoverflow에도 질문을 올렸는데, 일단 RDB서버에서 LDAP에 직접 접근하여 해결하는 방법이 거의 유일한 방법이지만,


    현재 RDB가 LDAP에 직접 접근할수 있는 권한은 받을수 없는 상태이므로, 사실상 스프링 내에서 jpa나 ldap 관련 기능들만으로는 질문드린 내용을 해결할 수 없다는 답변이 올라왔습니다.


    참고하시면 좋을것 같아, 스택오버플로우 링크를 남깁니다. 읽어주시고, 고민해주셨던분들 모두 감사합니다.

    https://stackoverflow.com/questions/52583926/how-to-add-ldap-data-into-the-queried-data-from-relational-database-table-using

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.