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

API standards et tierces Java Discussion :

[LDAP] Erreur création compte utilisateur


Sujet :

API standards et tierces Java

  1. #1
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut [LDAP] Erreur création compte utilisateur
    Bonjour,

    Je tente de créer un utilisateur dans un annuaire Active directory via JNDI.
    Cepdant lors de la création du compte, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Abort because javax.naming.directory.NoSuchAttributeException: [LDAP: error code 16 - 00000057: LdapErr: DSID-0C090B38, comment: Error in attribute conversion operation, data 0, vece]; remaining name 'cn=B**censure**T Bernard,CN=Users,DC=gratest,DC=fr'
    11:55:28,513 ERROR [ServerThread] failed to process invocation.
    java.io.NotSerializableException: com.sun.jndi.ldap.LdapCtx
    Voila la signification du code d'erreur 16 que j'ai trouvé :
    LDAP_NO_SUCH_ATTRIBUTE: Indicates that the attribute specified in the modify or compare operation does not exist in the entry.
    Je ne comprends pas très cette erreur puisque je souhaite créer un compte et non le modifier (il n'existe pas dans mon AD).

    Je vous montre le code qui s'execute :
    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
    String distinguishedName = "cn=" + compteAD.getNom().toUpperCase() + " " + firstUp(compteAD.getPrenom()) + _baseName;
     
    Attributes newAttributes = new BasicAttributes(true);
     
    // Définit l'objectclass
    Attribute oc = new BasicAttribute("objectclass");
    oc.add("user");
    oc.add("organiazionalPerson");
    oc.add("person");
    oc.add("top");		
     
    newAttributes.put(oc);
     
    // définit les valeurs du compte AD
     
    newAttributes.put(new BasicAttribute("sAMAccountName", compteAD.getCodeRedacteur()));
     
    if (compteAD.getNom() != null)
    	newAttributes.put(new BasicAttribute("sn", compteAD.getNom().toUpperCase()));
     
    if (compteAD.getPrenom() != null)
    	newAttributes.put(new BasicAttribute("givenName", compteAD.getPrenom()));
     
    ...Etc.. (initialisation des attributs de l'AD)...
     
    // Crée le compteAD dans l'annuaire.
    _ctx.createSubcontext(distinguishedName, newAttributes);
    Si vous comprennez d'ou pourrait provenir cette erreur, cela m'aiderait pas mal parceque là je commence à bloquer.

    Merci de votre aide.
    Loïc

  2. #2
    in
    in est déconnecté
    Membre expérimenté 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
    Points : 1 718
    Points
    1 718
    Par défaut
    ben apparemment tu essaies de mettre un attribut qui n'existe pas ...

    genre l'attribut sAMAccountName n'existe pas (ce n'est qu'un exemple, je ne sais pas )

  3. #3
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    J'y ai pensé, j'ai revérifié mes champs mais ils y sont bien tous dans l'AD. Pour en etre sur j'ai voulu crée un compte avec le minimum vital d'attribut (pour vérifier que la cause n'était pas un mauvais nom d'attribut) mais ca ne change rien. Donc le problème ne viens pas de là.

  4. #4
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Bon après pas mal de modif il s'avère que c'était mon distinguishedName qui posait problème. Honnetement je comprends toujours pas le lien avec le message d'erreur mais mainteant ca marche, enfin presque !

    Nouveau sous-probleme :

    Je veux "activer le compte à sa création. Je fais donc un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newAttributes.put(new BasicAttribute("UserAccountControl", "512"));
    et j'obtiens le message d'erreur suivant :
    Abort because javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0]; remaining name 'CN=B******T Bernard'
    et la définition de cette erreur dans la doc LDAP est :

    LDAP_UNWILLING_TO_PERFORM: Indicates that the LDAP server cannot process the request because of server-defined restrictions. This error is returned for the following reasons:

    * The add entry request violates the server's structure rules.
    * The modify attribute request specifies attributes that users cannot modify.
    * Password restrictions prevent the action.
    * Connection restrictions prevent the action.
    Je me connecte avec un compte d'administrateur du domaine, je vois pas à quelles restrictions je peux être sujet...

    Si vous avez une idée... Je continue a chercher de mon coté
    merci !

  5. #5
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Problème résolu : Il faut crée l'utilisateur désactivé et ensuite faire une modification sur le compte pour l'activer.

    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
     
    ...
    if (compteAD.getEMail()!=null)
    	newAttributes.put(new BasicAttribute("mail", compteAD.getEMail()));
     
    // Crée le compteAD dans l'annuaire (désactivé).
    _ctx.createSubcontext(distinguishedName, newAttributes);
     
    // Activation du compte.
    if (compteAD.getActif() != null) {
    	if (compteAD.getActif().equals("O"))
    		modifier(compteAD, "UserAccountControl","512");
    	else
    	        modifier(compteAD, "UserAccountControl","2");
    }

  6. #6
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Rectification, probleme non résolu

    Je n'ai effectivement plus l'erreur quand j'attribut le code "512" dans UserAccountControl mais le problème persiste puisque lorsque je parcours l'annuaire je vois que mes comptes sont toujours bloqués et porte la valeur 546 dans UserAccountControl soit 512 + 32 + 2.
    512 = compte activé
    32 = utilisateur doit changer de mot de passe
    2 = compte désactivé.

    Donc mon Active directory desactive automatiquement le compte et rajoute l'obligation de changer de mot de passe alors que moi j'ai bien initialisé la valeur a 512 tout cours.

    Je ne vois pas comment forcer cette valeur...

  7. #7
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Après plusieurs test, il se trouve que lorsque je souhaite modifier l'attribut "UserAccountControl" il me déclenche une erreur LDAP 53.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0]; remaining name 'CN=B***censure***T Bernard'
    Je peux sans problème modifier d'autres attributs mais celui-la il ne veut pas ! Comment faire pour activer le compte à sa création ? Je me demandais s'il n'était pas nécessaire de définir un mot de passe au préalable avant d'activer le compte.

    Merci pour vos conseils

  8. #8
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Problème résolu : Il faut pas mettre la valeur "512" (compte normal) dans le UserAccountControl mais la valeur "544" (compte normal + changement de mot de passe à la prochaine connexion) pour que ça fonctionne !

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Salut,

    J'ai une petite question à ce sujet ... As-tu eu besoin d'une connexion SSL pour créer l'utilisateur sur l'active directory.
    Il me semble que c'est obligatoire pour mettre à jour les mots de passe mais pour l'ajout je n'en sais rien.

    Voilà, de toute manière, je reviendrai donner une réponse, même si en lieu et place de JNDI, j'utilise JLDAP développé par Novell qui est pour moi plus simple

    Merci
    Benjamin

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Me revoilà donc, après divers essais et donc :
    - pour créer un compte sur AD via LDAP, pas besoin de connexion SSL
    - pour changer un mot de passe, nécessité d'une connexion SSL

    Pour la technique, j'utilise JLDAP, c'est top. Si vous avez des questions faites-moi signe.

    Pour ton problème d'activation du compte à la connexion, tu peux, si tu arrives à changer le mot de passe (ce qui passe par une connexion SSL), passer dans le mode que tu veux.
    Par contre, si tu n'y arrives pas, tu es effectivement obligé de définir userAccountControl de manière à ce que soit activée l'option "changer le mot de passe à la prochaine connexion". C'est logique, puisqu'aucun mot de passe n'est défini. Tu le vérifie d'ailleurs très bien en essayant de te connecter au compte (tu rentres sans mot de passe) !

    Voilà, voilà
    Ben

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/06/2009, 17h01
  2. création comptes utilisateurs
    Par alouha dans le forum Ubuntu
    Réponses: 3
    Dernier message: 12/11/2008, 16h30
  3. Création compte utilisateur limité
    Par kikoo_of_dijon dans le forum Debian
    Réponses: 1
    Dernier message: 21/09/2007, 21h09
  4. Création comptes utilisateurs
    Par Sheva7 dans le forum Access
    Réponses: 1
    Dernier message: 20/06/2006, 21h46
  5. [C#] Création compte utilisateur FTP
    Par slopera dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/03/2006, 10h34

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