스프링을 기반으로 한 웹 애플리케이션을 구현해야만 사용자가 LDAP 데이터를 관리 할 수 있습니다. LDAP에 대한 연결은 JNDI 프레임 워크에서만 수행되어야합니다 (SpringLDAP는 허용되지 않습니다).스프링에서 LDAP 연결
이를 위해 필자는 기본 작업 (추가, 업데이트, 삭제, 목록 등)을 수행하는 유틸리티 클래스를 구현했습니다.
다음은이 클래스의 코드의 짧은 블록 : 나는 LdapUtility.getInstance()...
를 호출하여 내 모든 메서드에 액세스 할 수있는이 코드
public class LdapUtility {
private static LdapUtility instance;
private DirContext dirContext;
public static LdapUtility getInstance() {
if(LdapUtility.instance == null)
LdapUtility.instance = new LdapUtility();
return LdapUtility.instance;
}
/**
* Connect to the LDAP
*/
private LdapUtility() {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=my-domain,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "secret");
try {
dirContext = new InitialDirContext(env);
}
catch(Exception ex) {
dirContext = null;
}
}
public void addUser(User u) {
dirContext.createSubcontext(....); //add user in the LDAP
}
}
는하지만, LDAP에 대한 연결이 해제되지 않습니다.
또 다른 방법은 각 작업 전에 LDAP에 연결하는 것입니다 만,이 경우에는 LDAP에 너무 많은 연결이있을 것입니다 ...
그래서 여기 내 질문은 : 가장 우아한 무엇인지/이러한 방법에 가장 현명한 방법으로 액세스 할 수 있습니까?
는 LDAP에 연결하는 방법에는 여러 가지가 있습니다
문제는 ldap에 연결하는 데 사용되는 방법과 관련이 없습니다. 필자의 경우 JNDI (클래스 프로젝트)를 사용해야한다. 내 문제는 LDAP 연결을 현명하게 관리하면서 내 컨트롤러에서 내 클래스의 메서드에 액세스하는 방법입니다. – user1901206