2012-08-07 1 views
0

나는 DS의 예를 들어 기본 스키마 작업 스피 ApacheDS에 JNDI를 사용하여 새 그룹을 추가하는 방법은 무엇입니까?

java.util.Hashtable; 
import java.util.Properties; 
import java.util.jar.Attributes; 

import javax.naming.Context; 
import javax.naming.NamingException; 
import javax.naming.directory.Attribute; 
import javax.naming.directory.BasicAttribute; 
import javax.naming.directory.BasicAttributes; 
import javax.naming.directory.DirContext; 
import javax.naming.directory.InitialDirContext; 

    public class Main{ 


      public static void main(String[] args) { 

       Hashtable env = new Hashtable(); 
       env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
       env.put(Context.PROVIDER_URL, "ldap://localhost:10389"); 
       env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
       env.put(Context.SECURITY_PRINCIPAL,"uid=admin,ou=system"); // specify the username 
       env.put(Context.SECURITY_CREDENTIALS,"secret");// specify the password 
       // TODO code application logic here 

          // entry's DN 
      String entryDN = "cn=myadmins,ou=groups,ou=system"; 

      // entry's attributes 

      Attribute cn = new BasicAttribute("cn", "myadmins"); 
      Attribute oc = new BasicAttribute("objectClass"); 
      oc.add("top"); 
      oc.add("groupOfUniqueNames"); 
      DirContext ctx = null; 

      try { 
       // get a handle to an Initial DirContext 
       ctx = new InitialDirContext(env); 

       // build the entry 
       BasicAttributes entry = new BasicAttributes(); 
       entry.put(cn); 

       entry.put(oc); 

       // Add the entry 

       ctx.createSubcontext(entryDN, entry); 
     //   System.out.println("AddUser: added entry " + entryDN + "."); 

      } catch (NamingException e) { 
       System.err.println("AddUser: error adding entry." + e); 
      } 
     } 
    } 

을 시도했다.

하지만 난 다른 그룹 항목 보았다

Required attributes [uniqueMember(2.5.4.50)] not found within entry cn=myadmins,ou=groups,ou=system]; remaining name 'cn=myadmins,ou=groups,ou=system' 

을 얻을, 그것은 값 uniqueMember 속성이있다 : 나는 나의 새로운 그룹에 대한의 uniqueMember 속성의 값을 지정할 수 있습니다 어떻게

0.9.2342.19200300.100.1.1=admin,2.5.4.11=system 

나는 점들이 포함 된 숫자가 나에게 조금 복잡하다는 것을 고백해야한다.

감사

답변

1

uniqueMember 속성은 DN 구문이 있습니다. 즉, 고유 이름은 상대 고유 이름 (또는 고유 이름의 구성 요소)이 아닌 값으로 사용해야 함을 의미합니다. 식별 이름은 파일 시스템의 완전한 경로 이름과 유사합니다.

uniqueMember 속성 값을 그룹의 구성원 인 고유 이름에 대한 "포인터"로 생각하십시오.

는 업데이트 :

the number containing dotsOID입니다. 예를 들어 cn과 같은 속성에는 OID가 있으며 스키마에서이를 고유하게 식별하는 역할을합니다. 예를 들어, LDAP의 속성, 컨트롤 및 기타 항목은 OID를 사용합니다.

+0

새로운 그룹을 정의하는 동안 하나의 uniqueMember를 지정해야한다고 생각합니다. 따라서 어떻게 지정할 수 있습니까? uniqueMember를 지정할 때 몇 가지 매개 변수를 고려해야합니까? – merveotesi

+0

'uniqueMember'는 그룹의 이름이 표시되면 관리자의 고유 이름입니다. –

+0

@merveotesi, 어떻게이 문제가 해결 되었습니까? –