IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

JNDI et OpenLdap


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut JNDI et OpenLdap
    Bonjour à tous,

    J'aimerais utiliser JNDI pour nourrir un annuaire LDAP, mais j'ai toujours droit au même message d'erreur:

    javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - dn: attribute type undefined];

    J'ai déja eu cette erreur, mais elle était simplement du à une faute de frappe. Si j'utilise la commande ldapadd avec un fichier texte au format ldif, ça fonctionne normalement. Voici mon fichier ldif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    dn: uid=geleludovic15051976,ou=people,dc=amiens,dc=iufm,dc=fr
    sn: Gele
    givenName: Ludovic
    cn: Gele Ludovic
    displayName: Ludovic Gele
    uid: geleludovic15051976
    title: ASI
    mail: ludovic.gele@amiens.iufm.fr
    userPassword: azerty
    postalAddress: 21 rue Jean Jaures$80480 Saleux
    labeledURI: none
    preferredLanguage: fr
    telephoneNumber: +33322535961
    facsimileTelephoneNumber: none
    mobile: telephone mobile
    eduPersonAffiliation: member
    eduPersonPrimaryAffiliation: employee
    eduPersonNickname: Ludo
    eduPersonPrincipalName: identifiant ENT
    supannAliasLogin: loginGele
    supannOrganisme: 0801885P
    supannCivilite: M.
    supannRole: GROUPE-LOGICIEL
    supannListeRouge: FALSE
    supannAutreTelephone: +33322535980
    supannAffectation: Service Informatique
    supannEmpId: 2567
    supannCodeINE: 0000000000g
    supannEtuId: etudIdGele
    supannParrainDN: cn=admin,dc=amiens,dc=iufm,dc=fr
    objectclass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: eduPerson
    objectClass: supannPerson
    En ce qui concerne le code pour créer une nouvelle entrée dans l'annuaire, j'ai suivi un tuto sur le site javaworld. J'ai créer une classe User comme suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public class User implements DirContext{
     
     
            Attributes myAttrs = new BasicAttributes(true);
            Attribute oc = new BasicAttribute("objectclass");
            Attribute ouSet = new BasicAttribute("ou");
     
        private String dn;
     
            public User(String dn, String sn, String givenname, String cn, String displayName, String uid, String title,
                    String mail, String userPassword, String postalAddress, String labeledURI, String preferredLanguage,
                    String telephoneNumber, String facsimileTelephoneNumber, String mobile, String eduPersonAffiliation,
                    String eduPersonPrimaryAffiliation, String eduPersonNickname, String eduPersonPrincipalName,
                    String supannAliasLogin, String supannOrganisme, String supannCivilite, String supannRole,
                    String supannListeRouge, String supannAutreTelephone, String supannAffectation, String supannEmpId,
                    String supannCodeINE, String supannEtuId, String supannParrainDN){
                this.dn=dn;
     
                oc.add("person");
                oc.add("organizationalPerson");
                oc.add("inetOrgPerson");
                oc.add("eduPerson");
                oc.add("supannPerson");
                ouSet.add("People");
     
                myAttrs.put(oc);
                myAttrs.put(ouSet);
                myAttrs.put("dn",dn);
                myAttrs.put("sn",sn);
                //etc, pour chaque attribut...
            }
    et je l'appel dans ma fonction main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DirContext ctx = new InitialDirContext(env);
     
                User p1 = new User("uid=geleludovic15051976, ou=people, dc=amiens, dc=iufm, dc=fr","Gélé","Ludovic",
                        "Gele Ludovic","Ludovic Gélé","geleludovic15051976","ASI","ludovic.gele@amiens.iufm.fr","azerty",
                        "21 rue Jean Jaures$80480 Saleux","none","fr","+33322535961","none","0625987458",
                        "member","employee","Ludo","identifiantENT","loginGele","0801885P","M.","none",
                        "TRUE","+33322535980","Service Informatique","2567","0000000000g",
                        "etudIdGele","cn=admin,dc=amiens,dc=iufm,dc=fr");
                ctx.bind("uid=geleludovic15051976, ou=people, dc=amiens, dc=iufm, dc=fr", p1);
                ctx.close();
    D'après google et la doc java, l'erreur 17 est du au fait que l'attribut n'est pas défini dans le schéma de l'annuaire. J'ai bien vérifier que c'était le cas, j'ai essayé de retirer tout les caractères accentué des attributs et re-vérifié mon code pour essayer de trouver des fautes de frappe, mais je ne vois rien.

    D'avance merci beaucoup pour toute aide et suggestions.

    PS:Je bosse sous netbeans 5.0, avec une jvm 1.5 sous windows XP. Mon système est à jour

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    l'erreur se déclenche sur le constructeur ou sur l'appel à bind ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Pardon, je n'ai pas mis le message complet:

    javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - dn: attribute type undefined]; remaining name'uid=geleludovic15051976, ou=people, dc=amiens, dc=iufm, dc=fr'

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    peut être pourrais tu afficher la stackTrace pour plus de précision.

    ce que je demandais c'est si l'erreur apparait lors de la construction (genre sur le myAttrs.put(...)) ou dans le main lors de l'appel à Bind.

    Ca pourrait surement nous donner une piste ...

    parce que bon, j'ai jamais fais de ldap avec java ...


    [EDIT]
    je sais pas mais ilne manque pas un espace ici ->
    name'uid=geleludovic15051976, ou=people, dc=amiens, dc=iufm, dc=fr'

    ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Tout d'abord, merci de ton attention et de ta patience. Je ne comprend pas encore bien les termes que tu emploies, mais je vais essayer de répondre le plus correctement possible

    L'erreur apparait dans le main, juste sur la ligne du bind. Pour l'espace manquant, c'était bien vu, j'ai pas fais gaffe

    Pour la stackTrace, j'espère que c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    run:
    javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - dn: attribute type undefined]; remaining name 'uid=geleludovic15051976, ou=people, dc=amiens, dc=iufm, dc=fr'
            at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3054)
            at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2931)
            at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2737)
            at com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:379)
            at com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:336)
            at com.sun.jndi.toolkit.ctx.ComponentContext.p_bind(ComponentContext.java:596)
            at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(PartialCompositeContext.java:183)
            at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(PartialCompositeContext.java:173)
            at javax.naming.InitialContext.bind(InitialContext.java:359)
            at ldapfeeder.Main.main(Main.java:130)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 2 seconds)
    En ce qui concerne le fait que tu n'ais jamais fais de LDAP avec java, ben même sans java je te souhaite de ne jamais en avoir besoin, c'est vraiment pas simple.

  6. #6
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut DN n'est pas un attribut
    DN n'est pas un "vrai" attribut. C'est le nom de ton entrée. J'ai fais de la synchro de donnée Java vers LDAP et jamais je ne mets le DN en attribut. Je l'utilise seulement lors du bind:
    context.bind(dn, attributs);
    Et ça marche très bien. donc, essaye en enlevant :
    myAttrs.put("dn",dn);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JNDI / OpenLDAP
    Par Mister-Joker dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 12/05/2008, 17h11
  2. Openldap-JNDI - recherche
    Par sangei dans le forum API standards et tierces
    Réponses: 29
    Dernier message: 12/12/2005, 17h06
  3. [Débutant][JNDI] Erreur "bad class file"
    Par giffle dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 05/01/2005, 10h23
  4. [JNDI] Problème en cas de perte de connexion
    Par Marc_P dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/10/2004, 14h45
  5. [JNDI] [LDAP] [DirContext] [LdapContext] DN / introspection
    Par wazup dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/04/2004, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo