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 PHP Discussion :

[POO] Créer un user dans une Active Directory (LDAP)


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [POO] Créer un user dans une Active Directory (LDAP)
    Bonjour,
    J'essaye de créer un utilisateur dans une Active directory en utilisant le protocol LDAP. J'arrive à me connecter en m'identifiant en tant qu'Administrateur, cependant je peux pas créer l'utilisateur "Jean Dupont"
    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
    <?php
    $ds=ldap_connect("ldap://tfe.isims.be");
    if ($ds) {
      // Connexion avec une identité qui permet les modifications
      ldap_bind($ds, "Administrateur@isims.be", "admin");
      // prepare les données
        $info["cn"]="Jean Dupont";
        $info["sn"]="Jean";
        $info["mail"]="jeand@serveur.mail.com";
        $info["objectclass"]="personne";
        // Ajoute les données au dossier
        $r=ldap_add($ds, "cn=Jean Dupont, o=isims, c=be", $info); /*line23*/
      ldap_close($ds);}
    else echo 'Impossible de se connecter au serveur LDAP';
    ?>
    Voilà l'erreur qu'il m'affiche
    Warning: ldap_add(): Add: No such attribute in c:\program files\easyphp1-8\www\test3.php on line 23
    Une idée?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    essai avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $info["objectClass"][0]='top';
        $info["objectClass"][1]='person';
        $info["objectClass"][2]='organizationalPerson';
        $info["objectClass"][3]='user';
    objectclass spécifie toute l'arborescence des objets

    oublie pas de modifier le useraccountcontrol si tu veux pas que ton user soit desactivé : http://support.microsoft.com/default...b;en-us;305144

    Tu dois avoir un souci aussi avec ton arborescence ...

    Sous l'AD, les entrées de base sont des DC
    Si ton domaine est truc.local :
    "cn=JeanDupont, cn=Users, dc=truc, dc=local"
    Users est le dossier par defaut de tes utilisateurs c'est un CN

    Pour voir ces arborescences utilise "ADSI Edit" fournit sur le cd de windows server dans les "Windows xxx Support Tools"

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai vérifié l'arborescence,et j'ai ajouté ta partie:
    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
    <?php
    $ds=ldap_connect("ldap://tfe.isims.be");
    // on suppose que le serveur LDAP est sur le serveur local
    if ($ds)
    {
    // Connexion avec une identité qui permet les modifications
     ldap_bind($ds, "Administrateur@isims.be", "admin");
    // prepare les données
     $info["cn"]="dupont";
     $info["sn"]="jean";
     $info["userPassword"]="dupont";
     $info["objectClass"][0]="top";
     $info["objectClass"][1]="person";
     $info["objectClass"][2]="organizationalPerson";
     $info["objectClass"][3]="user";
    // Ajoute les données au dossier
     $r=ldap_add($ds, "CN=dupont,CN=Users,DC=isims,DC=be", $info);
     ldap_close($ds);
    }
    else
    {
      echo 'Impossible de se connecter au serveur LDAP';
    }
    ?>
    l'erreur:
    Warning: ldap_add(): Add: Constraint violation in c:\program files\easyphp1-8\www\test3.php on line 23
    En fait, ça sert à quoi de définir "objectclass" ?
    ?
    Dernière modification par Invité ; 07/06/2006 à 04h26.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    ObjectClass c'est un des champs obligatoire, il défini ce qu'est l'objet ! Organisation, groupe, user, computer, contact ...

    En spécifiant l'ObjectClass utilisé plus haut, tu spécifie que ce que tu créé est un user ,user dérive de organizationalPerson qui dérive de person qui dérive de top.
    Il y a moyen d'étendre le modele, mais il faut faire une demande à Microsoft avec de long délai d'attente ...

    Mon soucis c'est que là je comprends pas, pour l'objet computer comme ça ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            $info["objectClass"][0]='top';
    	$info["objectClass"][1]='person';
    	$info["objectClass"][2]='organizationalPerson';
    	$info["objectClass"][3]='user';
    	$info["objectClass"][4]='computer'
    Pour le user il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $info["objectClass"][0]='user';

  5. #5
    Invité
    Invité(e)
    Par défaut
    Moi ce que je veux crèer c'est un compte genre "iaco@isims.be" donc c'est un user, alors que toi tu me parle de "computer"...
    Mais dans tous les cas, aucun des deux fonctionnent toujours la même erreur. Je suis vraiment perdu là, je dois absolument trouver une solution avant la semaine prochaine

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    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
    <?php
    $ds=ldap_connect("xx.xx.xx.xx");
    // on suppose que le serveur LDAP est sur le serveur local
    if ($ds)
    {
    // Connexion avec une identité qui permet les modifications
     ldap_bind($ds, "xxx@xxx.xxx", "xxxx");
    // prepare les données
     $info["sn"]="jean";
     $info["userPassword"]="dupont";
     $info["objectClass"][0]="user";
    // Ajoute les données au dossier
     $r=ldap_add($ds, "CN=dupont,CN=Users,DC=maquette,DC=local", $info);
     ldap_close($ds);
    }
    else
    {
      echo 'Impossible de se connecter au serveur LDAP';
    }
    ?>
    Chez moi ça marche

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pourqoi tu déclare "objectClass" avec "[0]" c'est un tableau?
    J'ai essayé ton script toujours la même erreur, est-ce qu'il faut pas configurer quelque chose au niveau du Windows Serevr ou de l'Active Directory...?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Pourqoi tu déclare "objectClass" avec "[0]" c'est un tableau?
    Quand tu le récupère avec un ldap_search il te retourne un tableau, donc je supose que oui
    J'ai essayé ton script toujours la même erreur, est-ce qu'il faut pas configurer quelque chose au niveau du Windows Serevr ou de l'Active Directory...?
    Je n'ai rien configurer sur mon Windows Serveur
    Tu n'aurais pas une contrainte de sécurité qui t'empèche certains mots de passe ( genre longeur obligatoire ou caractères spéciaux obligatoire ... )

  9. #9
    Membre à l'essai
    Profil pro
    DSI
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Je pense que le problème viendrait du contenu de ton add :

    LDAP_CONSTRAINT_VIOLATION: Indicates that the attribute value specified in a modify, add, or modify DN operation violates constraints placed on the attribute. The constraint can be one of size or content (string only, no binary).

    listing des erreurs LDAP

    ou essaie avec : (ici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    To add a group in Windows AD..
    $object_name="testgroup2";
    $members[]="CN=THU,ou=Users,dc=addomain,dc=domain,dc=dk";
    $members[]="CN=testgroup2,ou=Groups,dc=addomain,dc=domain,dc=dk";
    $addgroup_ad['cn']="$object_name";
    $addgroup_ad['objectClass'][0] = "top";
    $addgroup_ad['objectClass'][1] ="group";
    $addgroup_ad['descripton']=$object_description;
    $addgroup_ad['member']=$members;
    $addgroup_ad["sAMAccountName"] =$object_name;

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par No0ZBeeX
    Je pense que le problème viendrait du contenu de ton add :

    LDAP_CONSTRAINT_VIOLATION: Indicates that the attribute value specified in a modify, add, or modify DN operation violates constraints placed on the attribute. The constraint can be one of size or content (string only, no binary).

    listing des erreurs LDAP

    ou essaie avec : (ici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    To add a group in Windows AD..
    $object_name="testgroup2";
    $members[]="CN=THU,ou=Users,dc=addomain,dc=domain,dc=dk";
    $members[]="CN=testgroup2,ou=Groups,dc=addomain,dc=domain,dc=dk";
    $addgroup_ad['cn']="$object_name";
    $addgroup_ad['objectClass'][0] = "top";
    $addgroup_ad['objectClass'][1] ="group";
    $addgroup_ad['descripton']=$object_description;
    $addgroup_ad['member']=$members;
    $addgroup_ad["sAMAccountName"] =$object_name;
    C'est l'erreur...je comprends pas l'explication, mais le code que tu me montre là, c'est pour ajouter un groupe
    Citation Envoyé par iaco
    Tu n'aurais pas une contrainte de sécurité qui t'empèche certains mots de passe ( genre longeur obligatoire ou caractères spéciaux obligatoire ... )
    Le mot de passe est bon puisque j'arrive à créer l'utilisateur manuellement avec le même mot de pass,c'est autre chose...!!!

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Je sèche : chez moi ça marche nickel !

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu peux me remontrer une dernière fois le code qui a fonctionné?
    Donc l'utilisateur que tu as créé, peut après s'authentifier avec son propre compte c'est ça?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    C'est exactement le code que j'ai mis plus haut !

    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
    <?php
    $ds=ldap_connect("xx.xx.xx.xx");
    // on suppose que le serveur LDAP est sur le serveur local
    if ($ds)
    {
    // Connexion avec une identité qui permet les modifications
     ldap_bind($ds, "xxx@xxx.xxx", "xxxx");
    // prepare les données
     $info["sn"]="jean";
     $info["userPassword"]="dupont";
     $info["objectClass"][0]="user";
    // Ajoute les données au dossier
     $r=ldap_add($ds, "CN=dupont,CN=Users,DC=maquette,DC=local", $info);
     ldap_close($ds);
    }
    else
    {
      echo 'Impossible de se connecter au serveur LDAP';
    }
    ?>

    et non je ne peux pas me connecter avec puisqu'il est désactivé
    modifier le useraccountcontrol si tu veux pas que ton user soit desactivé : http://support.microsoft.com/default...b;en-us;305144
    T'es sur que tu n'a pas déjà un "jean" dans ton AD (que ce soit user ou computer !)

  14. #14
    Invité
    Invité(e)
    Par défaut
    Qu'est ce t'as mis comme adresse IP dans "ldap_connect"
    comment modifier ce "useraccountcontrol", j'ai cliqué sur le lien mais ça donne rien?

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Ben dans le ldap_connect je mets le serveur sur lequel est configuré l'AD

    Et pour le lien prend le tout premier que j'ai mis dans la conversation
    En réseumé ça dit ça :
    - Typical user : 0x200 (512)
    - Domain controller : 0x82000 (532480)
    - Workstation/server: 0x1000 (4096)

  16. #16
    Invité
    Invité(e)
    Par défaut
    En quoi je vais utiliser, ces paramètres de "UserAccountControl values"?
    Concrétement qu'est ce que je dois fair pour activer le compte?

Discussions similaires

  1. Afficher une recherche faite dans l'active directory
    Par clemantine dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/06/2012, 19h12
  2. Réponses: 0
    Dernier message: 26/04/2010, 12h10
  3. [LDAP] Faire une recherche dans un Active directory
    Par bullrot dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/04/2009, 21h39
  4. Récuppérer une IP dans l'Active Directory
    Par momoh dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/02/2009, 12h27
  5. Comment créer un commentaire dans une cellule d'Excel ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2005, 09h23

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