Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1641 connectés 

  FORUM HardWare.fr
  Programmation
  Java

   [LDAP/JAVA] value of naming attribute 'cn' is not present in entry

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[LDAP/JAVA] value of naming attribute 'cn' is not present in entry

n°1405992
irsot
Posté le 12-07-2006 à 23:49:27  profilanswer
 

Bonjour,
 
J'ai une erreur assez embettante depuis hier car je ne peu insérer des données au sein de mon serveur LDAP voici la cause :
 
 

Citation :

Error: LDAPException: Naming Violation (64) Naming Violation
LDAPException: Server Message: value of naming attribute 'cn' is not present in entry
LDAPException: Matched DN:


 
A savoir que mon dn en entrée est : "cn=XYZ,ou=baba,ou=bobo,dc=toto,dc=fr" et mon cn en entrée qui reprend bien le cn de mon dn "XYZ"
 
A savoir que j'ai créer ma propre classe sous ldap et que je fais dériver ma classe d'inetorgperson qui hérite elle meme d'organizationalperson et de person. la classe person a comme attributs obligatoires cn.
 
Donc en toute logique on doit lui passer un cn , chose que je fais mais qui malheuresement abouti a ce message d'erreur
 
J'utilise la librairie Novell pour me connecter et manipuler les données, voici le code pour insérer le cn :
 
 

Citation :

attributeSet.add( new LDAPAttribute("cn", attributs[68]));


 
 
je passe tout mes attributs dans le tableau
 
J'avais vu sur des forums comme quoi ce type d'erreur etait lié au fait qu'on ne mettait pas la bonne valeur au "cn" mais là apparement ce n'est pas le cas, mais j'ai quand meme cette erreur ..
 
si vous voyez une solution merci d'avance!

mood
Publicité
Posté le 12-07-2006 à 23:49:27  profilanswer
 

n°1406158
Bidem
Posté le 13-07-2006 à 10:36:00  profilanswer
 

Citation :

"cn=XYZ,ou=baba,ou=bobo,dc=toto,dc=fr"


 
J'y connais rien à LDAP et tout ça mais ça me parrait étrange que des paramètres soient séparés par une virgule.
 
Fais un affichage de attributs[68] pour voir la valeur qui pose problème.


Message édité par Bidem le 13-07-2006 à 10:36:50
n°1406485
irsot
Posté le 13-07-2006 à 16:06:59  profilanswer
 

C'est normal que les paramétres soient séparés par une virgule c'est la norme LDAP qui veut ca :)
 
et pour l'affichage de l'attributs 68 en effet j'ai testé en l'affichant à chaque fois et je n'ai pas vu d'erreur il correspondait bien à la valeur du cn  passé en paramétre

n°1410845
irsot
Posté le 21-07-2006 à 09:59:38  profilanswer
 

up !
 
à noter que quand je test en mettant un uid à la place du cn dans mon RDN sa me met la meme erreur mais pour l'uid :  
value of naming attribute 'uid' is not present in entry

n°1411157
the real m​oins moins
Posté le 21-07-2006 à 15:24:59  profilanswer
 

ton array "attributs" est de quel type??


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1411168
alien_nan
Posté le 21-07-2006 à 15:33:39  profilanswer
 

irsot a écrit :

up !

 

à noter que quand je test en mettant un uid à la place du cn dans mon RDN sa me met la meme erreur mais pour l'uid :
value of naming attribute 'uid' is not present in entry

 


tu te connectes avec un user qui a suffisamment de droit pour faire cette opération ?
d'ailleurs, de memoire, je pense pas que tu puisses modifier le cn d'une entrée .. non ? (je veux dire pour creer une entrée, ca se fait peut etre pas avec des add ? ton code ? )

n°1411682
irsot
Posté le 23-07-2006 à 12:48:53  profilanswer
 

"ton array "attributs" est de quel type??"
il est de type String
 
"tu te connectes avec un user qui a suffisamment de droit pour faire cette opération ? "
oui je me connect avec le rootdn
 
"d'ailleurs, de memoire, je pense pas que tu puisses modifier le cn d'une entrée .. non ? (je veux dire pour creer une entrée, ca se fait peut etre pas avec des add ?"
si on peut modifier le cn d'une entré grace à une commande spéciale, et sinon j'ai utilisé la librairie Novell pour me connecter et creer des entrées donc normalement cela devrait fonctionner j'ai juste adapter leur exemple de code à mon programmes.  
 
la librairie : http://www.openldap.org/jldap/
et voici le code d'insertion des entrées : http://developer.novell.com/docume [...] /index.htm rubrique addEntry.java
 
mais comme je l'ai dis creer une entré sa fonctionne car mon premier enregistrement fonctionne bien, c'est à chaque fois le deuxieme qui plante :/


Message édité par irsot le 23-07-2006 à 13:51:18
n°1412035
irsot
Posté le 24-07-2006 à 09:40:46  profilanswer
 

Voici mon code source si qqun pouvait deceler mon erreur :)
 
la classe AnalyseDelta a pour principal but de lire un fichier texte qui correspond a peu pres à un fichier LDIF, elle décortique chaque personne se trouvant dans ce fichier texte en prenant son dn et ses attributs qu'elle transmet à la classe ServiceLDAP.
 
Classe AnalyseDelta

Code :
  1. public class AnalyseDelta {
  2. public static String FichierDeltaTestCharge = "//cheminfichier.txt";
  3. public static String containerName;
  4. public static String[] attributs;
  5. public static String dn;
  6. public static String utilisateur;
  7. public void LireDelta()
  8. {
  9.  ServiceLdap sl = new ServiceLdap();
  10.  String entitee="";
  11.  String line="",LineDebut="",LineChangeType="",LineFin="",ChangetypeMode="";
  12.  String adr1="",adr2="",adr3="",adr4="",adr5="",nom="",prenom="";
  13.  String affec1="",affec2="",affec3="",affec4="",affec5="",civilite="",codeaffec="",codece="",codecentrefrais="",codeefs="",codemploi="";
  14.  String struct1="",struct2="",struct3="",struct4="",struct5="",struct6="",struct7="",struct8="",cptprincipal="",datedeb="",datefin="";
  15.  String degre="",fonction="",identback="",identifiant="",identhierar="",libaffec="",libcentre="",libentite="",liblieugeo="",liblongstrn1="";
  16.  String liblongstrn2="",liblongstrn3="",libsociete="",libstruct1="",libstruct2="",libstruct3="",libstruct4="",libstruct5="";
  17.  String libstruct6="",libstruct7="",libstruct8="",lieugeotra="",mail="",memoid="",numpc="",numsalarie="",profil1="",profil2="";
  18.  String profil3="",profil4="",profil5="",teldirect="",telfax="",telportable="",telsecretariat="",typecontrat="";
  19.  int j=0,x=0;
  20.  try
  21.  {
  22.   BufferedReader b = new BufferedReader(new FileReader(FichierDeltaTestCharge));
  23.   try{
  24.    while(b.ready()) {  // tant que le fichier n'est pas finit
  25.     line=b.readLine();
  26.     //System.out.println(line + " " +line.length());
  27.     if(line.length()>17){identhierar=line.substring(0,18);}
  28.     if(line.length()>15){codecentrefrais=codeaffec=affec1=affec2=affec3=affec4=affec5=LineFin=line.substring(0,16);}
  29.     if(line.length()>15){struct1=struct2=struct3=struct4=struct5=struct6=struct7=struct8=line.substring(0,16);}
  30.     if(line.length()>14){libstruct1=libstruct2=libcentre=libaffec=datefin=datedeb=line.substring(0,15);}
  31.     if(line.length()>14){telsecretariat=libstruct3=libstruct4=libstruct5=libstruct6=libstruct7=libstruct8=line.substring(0,15);}
  32.     if(line.length()>13){liblieugeo=adr5=adr4=adr3=adr2=adr1=line.substring(0,14);}
  33.     if(line.length()>12){liblongstrn1=liblongstrn2=liblongstrn3=cptprincipal=line.substring(0,13);}
  34.     if(line.length()>11){typecontrat=identifiant=identback=line.substring(0,12);}
  35.     if(line.length()>10){telportable=numsalarie=lieugeotra=libsociete=LineChangeType=line.substring(0,11);}
  36.     if(line.length()>9){teldirect=libentite=codemploi=line.substring(0,10);}
  37.     if(line.length()>8){fonction=civilite=line.substring(0,9);}
  38.     if(line.length()>7){profil1=profil2=profil3=profil4=profil5=codeefs=line.substring(0,8);}
  39.     if(line.length()>6){telfax=memoid=codece=prenom=LineDebut=line.substring(0,7);}
  40.     if(line.length()>5){numpc=degre=line.substring(0,6);}
  41.     if(line.length()>4){mail=line.substring(0,5);}
  42.     if(line.length()>3){nom=line.substring(0,4);}
  43.     if(LineDebut.equals("dn: CN=" ) == true) //detecte si nous sommes au debut d'un utilisateur
  44.     {
  45.      StringTokenizer st = new StringTokenizer(line,"=," );
  46.      st.nextToken();
  47.      utilisateur = st.nextToken();
  48.      st.nextToken();st.nextToken();st.nextToken();
  49.      entitee = st.nextToken();
  50.      dn = "uid=" + utilisateur + ",ou=personnel," + "ou=" + entitee + "," + containerName;
  51.     }
  52.     if(LineChangeType.equals("changetype:" ) == true) //detecte le changetype
  53.     {
  54.      StringTokenizer st0 = new StringTokenizer(line," " );
  55.      st0.nextToken();
  56.      ChangetypeMode = st0.nextToken();
  57.      if(ChangetypeMode.equals("add" ) == true)
  58.      {
  59.       j=1;
  60.      }
  61.      if(ChangetypeMode.equals("delete" ) == true)
  62.      {
  63.       j=2;
  64.      }
  65.      if(ChangetypeMode.equals("Mask" ) == true)
  66.      {
  67.       j=3;
  68.      }
  69.      if(ChangetypeMode.equals("Modify" ) == true)
  70.      {
  71.       j=4;
  72.      }
  73.     }
  74.     if(j == 1) // procédure d'ajout d'une personne
  75.     {
  76.      if(adr1.equals("ADRLIEUGEOTRA1:" ) == true)
  77.      {
  78.       StringTokenizer st1 = new StringTokenizer(line);
  79.       st1.nextToken();
  80.       while((st1.hasMoreTokens()))
  81.        attributs[2] = attributs[2] + " " + st1.nextToken();
  82.      }
  83.      if(adr2.equals("ADRLIEUGEOTRA2:" ) == true)
  84.      {
  85.       StringTokenizer st1 = new StringTokenizer(line);
  86.       st1.nextToken();
  87.       while((st1.hasMoreTokens()))
  88.        attributs[3] = attributs[3] + " " + st1.nextToken();
  89.      }
  90.      if(adr3.equals("ADRLIEUGEOTRA3:" ) == true)
  91.      {
  92.       StringTokenizer st1 = new StringTokenizer(line);
  93.       st1.nextToken();
  94.       while((st1.hasMoreTokens()))
  95.        attributs[4] = attributs[4] + " " + st1.nextToken();
  96.      }
  97.      if(adr4.equals("ADRLIEUGEOTRA4:" ) == true)
  98.      {
  99.       StringTokenizer st1 = new StringTokenizer(line);
  100.       st1.nextToken();
  101.       while((st1.hasMoreTokens()))
  102.        attributs[5] = attributs[5] + " " + st1.nextToken();
  103.      }
  104.      if(adr5.equals("ADRLIEUGEOTRA5:" ) == true)
  105.      {
  106.       StringTokenizer st1 = new StringTokenizer(line);
  107.       st1.nextToken();
  108.       while((st1.hasMoreTokens()))
  109.        attributs[6] = attributs[6] + " " + st1.nextToken();
  110.      }
  111.                                                 ....
  112.      if(typecontrat.equals("TYPECONTRAT:" ) == true)
  113.      {
  114.       StringTokenizer st1 = new StringTokenizer(line);
  115.       st1.nextToken();
  116.       while((st1.hasMoreTokens()))
  117.        attributs[67] = attributs[67] + " " + st1.nextToken();
  118.      }
  119.      if(LineFin.equals("FinCollaborateur" ) == true)
  120.      {
  121.       x=1;
  122.      }
  123.      if(x == 1)
  124.      {
  125.       int i;
  126.       attributs[7] = attributs[2]+attributs[3]+attributs[4]+attributs[5]+attributs[6];
  127. //rajout d'un cn car la classe person de LDAP necessite l'attribut cn (common name)
  128.       attributs[68] = utilisateur;
  129.       for(i=0;i<attributs.length;i++)
  130.       {
  131.        if((attributs[i].equals(" " ) || attributs[i].equals("     " )) == false)
  132.        {
  133.         attributs[i]=attributs[i].trim();
  134.        }
  135.       }
  136.       sl.AjouterPersonne(attributs,dn);
  137.       for(i=0;i<attributs.length;i++)
  138.              attributs[i]=" ";
  139.       j=x=0;
  140.      }
  141.     }
  142.     if(j==2)
  143.     {
  144.      sl.EnleverPersonne(dn);
  145.     }
  146.    }
  147.   }
  148.   finally
  149.   {
  150.    b.close();
  151.   }
  152.  }
  153.  catch(IOException ioe)
  154.  {
  155.   System.err.println("IO erreur :" + ioe);
  156.  }
  157. }
  158. public AnalyseDelta()
  159. {
  160.         containerName  = "XXX";
  161.         attributs = new String[70];
  162.         int i = 0;
  163.         for(i=0;i<attributs.length;i++)
  164.          attributs[i]=" ";
  165. }
  166. public static void main(String[] args)
  167.     {
  168.             AnalyseDelta lp = new AnalyseDelta();
  169.             lp.LireDelta();
  170.     }
  171. }


 
Classe ServiceLDAP

Code :
  1. public class ServiceLdap {
  2. public static int ldapPort;
  3. public static int ldapVersion;
  4. public static String ldapHost;
  5. public static String loginDN;
  6. public static String password;
  7. public static String containerName;
  8. public static LDAPConnection lc;
  9. public static LDAPAttribute  attribute;
  10. public static LDAPAttributeSet attributeSet;
  11. public ServiceLdap() {
  12.  ldapPort = LDAPConnection.DEFAULT_PORT;
  13.         ldapVersion  = LDAPConnection.LDAP_V3;
  14.         ldapHost       = "XXX";
  15.         loginDN        = "XXX";
  16.         password       = "XXX";
  17.         containerName  = "XXX";
  18.         lc = new LDAPConnection();
  19.         attribute = null;
  20.         attributeSet = new LDAPAttributeSet();
  21. }
  22. public void AjouterPersonne(String[] attributs, String dn)
  23. {
  24. System.out.println("dn : " + dn);
  25. System.out.println("uid : " + attributs[34]);
  26. System.out.println("cn : " + attributs[68]);
  27. attributeSet.add( new LDAPAttribute("objectclass", new String("personCM" )));
  28.         attributeSet.add( new LDAPAttribute("adrlieugeotra1", attributs[2]));             
  29.         attributeSet.add( new LDAPAttribute("adrlieugeotra2", attributs[3]));       
  30.         attributeSet.add( new LDAPAttribute("adrlieugeotra3", attributs[4]));       
  31.         attributeSet.add( new LDAPAttribute("adrlieugeotra4", attributs[5]));                                                   
  32.         attributeSet.add( new LDAPAttribute("adrlieugeotra5", attributs[6]));
  33.         ...     
  34.         attributeSet.add( new LDAPAttribute("uid", attributs[34]));       
  35.         ...
  36. attributeSet.add( new LDAPAttribute("cn", attributs[68]));
  37.     
  38.         LDAPEntry newEntry = new LDAPEntry( dn, attributeSet );
  39.         try {
  40.             lc.connect( ldapHost, ldapPort );
  41.            
  42.             lc.bind( ldapVersion, loginDN, password.getBytes("UTF8" ) );
  43.             lc.add( newEntry );
  44.             System.out.println( "\nAjout de l'entrée: " + dn + " est enregistrée." );
  45.             lc.disconnect();
  46.         }
  47.         catch( LDAPException e ) {
  48.             System.out.println( "Erreur:  " + e.toString());
  49.         }
  50.         catch( UnsupportedEncodingException e ) {
  51.             System.out.println( "Erreur: " + e.toString() );
  52.         }
  53. }
  54. public void EnleverPersonne(String dn) // enleve une personne si  
  55. {
  56.  try
  57.  {
  58.   lc.connect( ldapHost, ldapPort );
  59.   lc.bind( ldapVersion, loginDN, password.getBytes("UTF8" ) );
  60.   lc.delete( dn );
  61.   System.out.println( "\nL'entrée: " + dn + " est détruite." );
  62.   lc.disconnect();
  63.  }
  64.  catch( LDAPException e )
  65.  {
  66.   if ( e.getResultCode() == LDAPException.NO_SUCH_OBJECT )
  67.    System.err.println( "Erreur: L'entrée n'existe pas" );
  68.   else if ( e.getResultCode() == LDAPException.INSUFFICIENT_ACCESS_RIGHTS )
  69.    System.err.println( "Erreur: Vous n'avez pas les permissions" );
  70.      else
  71.          System.err.println( "Erreur: " + e.toString() );
  72.  }       
  73.  catch( UnsupportedEncodingException e )
  74.  {
  75.   System.out.println( "Erreur: " + e.toString() );
  76.  }
  77. }
  78. }

n°1412039
the real m​oins moins
Posté le 24-07-2006 à 09:43:45  profilanswer
 

ha ouais d'accord [:pingouino]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1412846
irsot
Posté le 25-07-2006 à 10:35:08  profilanswer
 


mais encore?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

   [LDAP/JAVA] value of naming attribute 'cn' is not present in entry

 

Sujets relatifs
java.nio.FileLock et FileChannel: équivalent en 1.3.1Exception in thread "main".java.lang.StringIndexOutOfBoundsException
Un intranet (portail, cms) en JAVA ? (Liferay - Jahia...)[VBS + LDAP + HTML] Récupération des infos utilisateurs d'un AD
API java pour du ftp[Résolu] Equivalent uft8_encode() en Java?
[java][jfreechart] présentation de la légendeArchitecture 3-tier, en Java, couche DAO
+50Gb of Ebooks (c++,c#,java,security,network...)Java et les tableaux (J&#8217;ai un gros-petit problème)
Plus de sujets relatifs à : [LDAP/JAVA] value of naming attribute 'cn' is not present in entry


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR