2012-08-07 2 views
0

J'ai essayéComment ajouter un nouveau groupe en utilisant JNDI à ApacheDS?

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); 
      } 
     } 
    } 

Iam travaillant sur le schéma par défaut exemple de DS.

Mais je reçois

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' 

je regardais autre entrée du groupe, il a uniqueMember attribut avec la valeur:

0.9.2342.19200300.100.1.1=admin,2.5.4.11=system 

Comment puis-je spécifier la valeur de l'attribut uniqueMember pour mon nouveau groupe,

Je dois avouer que le nombre de points est un peu compliqué pour moi.

Merci

Répondre

1

L'attribut uniqueMember a la syntaxe DN. Cela signifie qu'un nom distinctif doit être utilisé en tant que valeur et non en tant que nom distinctif relatif (ou composant d'un nom distinctif). Un nom distinctif est analogue à un chemin d'accès complet sur un système de fichiers. Pensez à la valeur de l'attribut uniqueMember comme un "pointeur" vers un nom distinctif membre du groupe.

Mise à jour:

Le the number containing dots est un OID. Les attributs, les contrôles et d'autres éléments dans les OID d'utilisation LDAP, par exemple, un attribut tel que cn sont associés à un OID qui l'identifie de manière unique dans le schéma.

+0

Je pense que je dois spécifier un uniqueMember tout en définissant un nouveau groupe. Alors, comment puis-je le spécifier? Dois-je tenir compte de certains paramètres lorsque je spécifie uniqueMember? – merveotesi

+0

'uniqueMember' est le nom distinctif d'un administrateur, si le nom du groupe est une indication. –

+0

@merveotesi, Comment avez-vous résolu ce problème? –

Questions connexes