ldap api 구축.[spring-boot][ldap-lib]

김명래·2023년 2월 8일
0

baseDn : 기본 domain name을뜻함.

objectClass : top class 가 최상위 class이며 하위 class 마다 필요한 value 가 달라진다. (각 데이터마다 top class 는 필수이다.)

먼저 spring ldap lib 를 사용하기 전 에는 굉장히 귀찮은 부분이 많았는대 spring lib 를 적용하니 훨씬 편해진다.
또한, JPA에서 entry가 db와 mapping 하듯이 mapping class 를 만들어서 관리할 수 있다.
먼저 Bean 설정에대해 보자.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;

@Configuration
public class SpringConfig {
    @Bean
    public LdapContextSource contextSource(){
        LdapContextSource contextSource = new LdapContextSource();

     	contextSource.setUrl("ldap://******(serverIP)");      	  
        contextSource.setUserDn("admin dn");
        contextSource.setPassword("admin pwd");
        return contextSource;
    }
    @Bean
    public LdapTemplate ldapTemplate(){
        return new LdapTemplate(contextSource());
    }
}

이것으로 LdapTemplate 에 대한 Injection 을 수행한다.

class mapping


import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.ldap.odm.annotations.Attribute;
import org.springframework.ldap.odm.annotations.Entry;
import org.springframework.ldap.odm.annotations.Id;

import javax.naming.Name;

@Getter
@Setter
@ToString
@Entry(
        base = "",
        objectClasses = {"top", "person"}
)
public class LdapUser {
    @Id
    private Name Id;
    private @Attribute(name = "cn")String cn;
    private @Attribute(name = "uid")String uid;
    private @Attribute(name = "sn")String sn;
    private @Attribute(name = "description")String description;

    public LdapUser(){

    }
    @Builder
    public LdapUser(Name id, String cn, String uid, String sn, String description) {
        Id = id;
        this.cn = cn;
        this.uid = uid;
        this.sn = sn;
        this.description = description;
    }
}

@Attribute 어노테이션으로 맵핑을 하고 objectClass 에 무엇을 주느냐에 따라
필수적인 data들이 달라진다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글