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들이 달라진다.