정말 하나도 모르는 상태에서 하려니까 막막합니다. 그래도 여기 여러분들의 글을 읽고 하나씩 하고 있습니다.
리눅스에 Openldap과 Berkley DB를 깔아서 ldapadd 명령어로 사용자를 추가하는 것은 성공했습니다. 이제 JSP 페이지에서 사용자를 LDAP에 추가하는 페이지를 만들어야 하는데 잘 되질 않는군요. 다른 분들의 예제를 봐도 잘 모르겠고요...
제가 쓰는 ldif 파일은
----------------------
dn: cn=simpact,dc=kms,dc=kaist,dc=ac,dc=kr
objectClass: person
objectClass: uidObject
sn: Yang
cn: GW yang
userPassword: simpact
uid: simpact
------------------------
와 같고요... 이걸
ldapadd -D "cn=Manager,dc=kms,dc=kaist,dc=ac,dc=kr" -w kms123 -f sample3.ldif
이렇게 하면 사용자 추가가 됩니다. 그런데 이걸 다음과 같은 JSP 페이지로 시도를 하면 에러가 납니다.
----------------------------------
<%@ page session="true" import="javax.naming.*, javax.naming.directory.*, java.util.*" contentType="text/html; charset=euc-kr"%>
<%
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://isir.kaist.ac.kr:389/");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=kms,dc=kaist,dc=ac,dc=kr");
env.put(Context.SECURITY_CREDENTIALS, "kms123");
try {
DirContext ctx = new InitialDirContext(env);
// out.println("인증에 성공했습니다...");
Attributes attrs = new BasicAttributes(true);
Attribute objclass = new BasicAttribute("objectclass");
Attribute person = new BasicAttribute("person");
Attribute uidObject = new BasicAttribute("uidObject");
objclass.add("cn=kwlee,dc=kms,dc=kaist,dc=ac,dc=kr");
objclass.add("person");
objclass.add("uidObject");
objclass.add("Lee");
objclass.add("kw Lee");
objclass.add("kwlee");
objclass.add("kwlee");
attrs.put(objclass);
Context result = ctx.createSubcontext("uid=kwlee,cn=kwlee,dc=kms,dc=kaist,dc=ac,dc=kr", attrs);
result.close();
ctx.close();
} catch (Exception e) {
out.println("에러가 발생했네요..." + e);
} finally {
}
%>
--------------------------------
에러메시지는
-------------------------
에러가 발생했네요... javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 - objectclass: value #0 contains invalid data]; remaining name 'uid=kwlee,cn=kwlee,dc=kms,dc=kaist,dc=ac,dc=kr'
--------------------------
입니다. LDAP 엔트리 추가가는 부분에서 잘못된 데이터가 들어갔다고 하는 걸로 봐서는 뭔가 적어주는 방법이 틀린것 같은데 어떻게 해야할 지 모르겠습니다. 다양하게 해봤는데 모두 실패했습니다.
꼭 좀 도와주십시오... 그럼 이만... 미리 감사드립니다.
simpact....
|