Connexion active directory

yossra -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je veux connecter a l'active directory avec windows 10
pour collecter les informations sur les personnels connectées mais je ne connais pas comment je fais cette connexion

Configuration: Windows / Edge 84.0.522.63

29 réponses

  • 1
  • 2
Résumé de la discussion

La question porte sur la connexion à un Active Directory avec Windows 10 afin de collecter des informations sur les personnels connectés, via LDAP et des requêtes vers l’annuaire. Plusieurs réponses suggèrent d’utiliser des scripts ou du code PHP pour établir une liaison LDAP (ldap_connect, ldap_bind) et interroger le domaine (base DN, filtres, résultats sous forme de tableau). En parallèle, certains préconisent de se former avant d’exécuter des scripts sensibles et de consulter des ressources explicatives sur le fonctionnement LDAP et Active Directory. En outre, certaines interventions posent la question d’alternatives ou de méthodes sans LDAP, sans parvenir à une recommandation unique valable pour tous les environnements actuels.

Bobot (l'IA à votre service)
  1. yossra
     
    merci j'ai utilisé ce site mais ca marche pas ,est ce que j'ai besoin d'utiliser l
    e nom du domaine et la racine pour acceder a mon compte?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      "ca marche pas": qu'as-tu essayé, qu'as-tu obtenu?
      0
  2. yossra
     
    <?php
    session_start();
    include('Connexion/connexion.php');
    $_SESSION['ERREUR'] = "";
    //verification cookie
    if(!empty($_SERVER['REMOTE_USER']))
    {
    include_once('Connexion/ldap_connexion.php');
    session_start();
    $ldapConn = ldap_connect($ldapServer ) or $this->msg = "ERROR CONNECT LDAP";
    $userName = explode("\\", $_SERVER['REMOTE_USER']);
    $query = "sAMAccountName=".$userName[1];
    ldap_set_option($ldapConn,LDAP_OPT_PROTOCOL_VERSION,3);
    ldap_set_option($ldapConn,LDAP_OPT_REFERRALS,0);
    $ldapBind = ldap_bind($ldapConn,$rdn,$mdp);
    $ldapResult = ldap_search($ldapConn,$baseDN,$query);
    $info = ldap_get_entries($ldapConn,$ldapResult);
    $currentUserInformation = array();
    for ($i=0; $i < $info ["count"]; $i++)
    {
    $mail = $info[$i]["mail"][0];
    }
    ldap_unbind($ldapConn);
    // Vérification des identifiants
    $req = $bdd->prepare('SELECT id_personne FROM personne WHERE mail = :mail');
    $req->execute(array(
    'mail' => $mail));
    $resultat = $req->fetch(PDO::FETCH_ASSOC);
    if ($resultat)
    {
    setcookie('id_personne', $resultat['id_personne'], time() + 365*24*3600, "/");
    $_SESSION['id_personne'] = $resultat['id_personne'];
    header('Location: accueil.php'); // redirige vers l'accueil
    }
    }
    else if (!empty($_COOKIE['id_personne'])) {
    $id_personne = $_COOKIE['id_personne']; // Remplace les simple quote par des double quote pour éviter les problemes d'injection sql
    setcookie('id_personne', $id_personne, time() + 365*24*3600, "/");
    $_SESSION['id_personne'] = $id_personne;
    header('Location: accueil.php'); // redirige vers l'accueil
    }
    else if ((!empty($_POST['login']) && !empty($_POST['mdp'])))
    {
    $login = $_POST['login']; // Remplace les simple quote par des double quote pour éviter les problemes d'injection sql
    $mdp = sha1($_POST['mdp']);
    // Vérification des identifiants
    $req = $bdd->prepare('SELECT id_personne FROM personne WHERE login = :login AND mdp_personne = :mdp');
    $req->execute(array(
    'login' => $login,
    'mdp' => $mdp));
    $resultat = $req->fetch(PDO::FETCH_ASSOC);
    if (!$resultat)
    {
    $_SESSION['ERREUR'] = "Login et/ou mot de passe incorrect"; // Message d'erreur
    }
    else
    {
    setcookie('id_personne', $resultat['id_personne'], time() + 365*24*3600, "/");
    $_SESSION['id_personne'] = $resultat['id_personne'];
    header('Location: accueil.php'); // redirige vers l'accueil
    }
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Login</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" >
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" >
    <link rel="stylesheet" href="css/formulaire.css" >
    <link rel="stylesheet" href="css/general.css" >
    </head>
    <script src="js/jquery.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <body>
    <body class="couleur3">
    <!-- header -->
    <?php
    if(!empty($_SESSION['ERREUR']))
    {
    echo ' <div class="alert alert-warning message" style="font-size:20px;">
    <a href="#" class="close" data-dismiss="alert">×</a>
    '.$_SESSION['ERREUR'].'
    </div>';
    session_destroy();
    }
    ?>
    <form id="form_connexion" class="form-login" method='post' action="#" >
    <fieldset class="col-md-3 col-md-offset-4 login">
    <form action="#" id="info" method="post">
    <div class="form-group">
    <label for="login-text" class="form-control-label">login:</label>
    <input type="text" class="form-control" name="login" id="login" required>
    </div>
    <div class="form-group">
    <label for="mdp-name" class="form-control-label">mot de passe:</label>
    <input type="password" class="form-control" name="mdp" id="mdp" required>
    </div>
    <button type="submit" id="submit" name="submit" class="btn btn-success col-md-offset-2 button-log">Connexion</button>
    </form>
    </fieldset>
    </body>
    </body>
    </html>
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      qu'as-tu obtenu?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu indenter ton code avant de le partager?
      0
  3. yossra
     
    ( ! ) Warning: include(Connexion/connexion.php): failed to open stream: No such file or directory in C:\wamp64\www\connexion.php on line 3
    Call Stack
    # Time Memory Function Location
    1 0.0006 408016 {main}( ) ...\connexion.php:0

    ( ! ) Warning: include(): Failed opening 'Connexion/connexion.php' for inclusion (include_path='.;C:\php\pear') in C:\wamp64\www\connexion.php on line 3
    Call Stack
    # Time Memory Function Location
    1 0.0006 408016 {main}( ) ...\connexion.php:0


    login:
    6501
    mot de passe:
    ••••
    Connexion
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      pourquoi veux-tu faire cela?
      as-tu déjà beaucoup travaillé en php?
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. yossra
     
    non mais je trouve ce code dans l'internet parce que j'ai pas de solution
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ne devrais-tu pas d'abord te former avant de faire ce travail?
      est-ce utile de chercher des codes sans les comprendre?
      0
  6. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Vu le message d'erreur

    Warning: include(Connexion/connexion.php): failed to open stream: No such file or directory in C:\wamp64\www\connexion.php on line 3

    c'est qu'il ne trouve pas le fichier
    include('Connexion/connexion.php');
    

    Donc... as tu un dossier nommé Connexion ?
    Dedans.. as tu un fichier nommé connexion.php ?

    Que contient ce fichier ? ( pense à utiliser les balises de code et à indenter ton code !! )

    0
  7. yossra
     
    non j'ai pas cette fichier je compremds ma faute mais je ne trouve pas la solution
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comprends-tu ce que fait le code que tu as écrit?
      0
  8. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Comme le fait remarquer Yg_be ... copier/coller bêtement un script sans chercher à le comprendre est une grosse co**** !!
    Voici de quoi comprendre un minimum comment ça marche :
    https://www.commentcamarche.net/contents/798-php-connexion-a-un-annuaire-ldap

    0
  9. t
     
    resultat:
    Connexion...
    Impossible de se connecter au serveur LDAP
    0
  10. yossra
     
    <?php
    $server = "localhost";
       $port = "389";
      $racine = "o=inet, c=home";
       $rootdn = "cn=Stage,o=inet, c=home";
    
       $rootpw = "Stage2020";
    
    echo "Connexion...<br>";
    
    $ds=ldap_connect($server);
    
    if ($ds==1)
      {
      // on s'authentifie en tant que super-utilisateur, ici, ldap_admin
      $r=ldap_bind($ds,$rootdn,$rootpw);
    
     // Ici les opérations à effectuer
     echo "Déconnexion...<br>";
    
     ldap_close($ds);
    
      }
    else {
     echo  "Impossible de se connecter au serveur LDAP";
    
      }
    ?> 
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      là ce n'est plus un souci de code php ..... mais vraisemblablement d'identifiants...

      Tu peux toujours essayer d'ajouter cette ligne dans ton else
      ldap_err2str( ldap_errno() );
      

      ça devrait te donner un peu plus d'infos sur l'erreur rencontrée.
      0
      1. yossra > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ( ! ) Warning: ldap_errno() expects exactly 1 parameter, 0 given in C:\wamp64\www\connex.php on line 25
        Call Stack
        # Time Memory Function Location
        1 0.1061 408528 {main}( ) ...\connex.php:0
        2 0.1585 408560 ldap_errno ( ) ...\connex.php:25
        0
      2. yossra > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Connexion...

        ( ! ) Warning: ldap_errno() expects exactly 1 parameter, 0 given in C:\wamp64\www\connex.php on line 25
        Call Stack
        # Time Memory Function Location
        1 0.1376 408704 {main}( ) ...\connex.php:0
        2 0.1578 408736 ldap_errno ( ) ...\connex.php:25
        ldap-error:Success
        Impossible de se connecter au serveur LDAP
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yossra
         
        qu'en penses-tu? le message n'est-il pas clair?
        0
  11. yossra
     
     else {
    echo"ldap-error:".ldap_err2str(ldap_errno())."<br>\n";
     echo  "Impossible de se connecter au serveur LDAP";
    
      }
    0
  12. yossra
     
    Connexion...

    ( ! ) Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in C:\wamp64\www\connex.php on line 16
    Call Stack
    # Time Memory Function Location
    1 0.0274 407832 {main}( ) ...\connex.php:0
    2 0.0516 408184 ldap_bind ( ) ...\connex.php:16
    Déconnexion...
    0
  13. yossra
     
    else {
    echo"ldap-error:".ldap_errno()."<br>\n";
     echo  "Impossible de se connecter au serveur LDAP";
    
      }
    0
  14. yossra
     
    Connexion...

    ( ! ) Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in C:\wamp64\www\connex.php on line 16
    Call Stack
    # Time Memory Function Location
    1 0.0003 408000 {main}( ) ...\connex.php:0
    2 0.0003 408352 ldap_bind ( ) ...\connex.php:16
    Déconnexion...
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Donc ton erreur se situe dans le bin.
      $ds=ldap_connect($server);
      
      if ($ds==1)  {
        // on s'authentifie en tant que super-utilisateur, ici, ldap_admin
        $ldapbind=ldap_bind($ds,$rootdn,$rootpw) or die (ldap_err2str( ldap_errno($ds) );
          // verify binding
          if ($ldapbind) {
             // Ici les opérations à effectuer
              echo "Déconnexion...<br>";
              ldap_close($ds);
          } else {
              echo "Erreur BIND !";
          }
        } else {
           echo  "Impossible de se connecter au serveur LDAP";
        }
      


      Et au cas où ... voici un exemple propre de code que tu peux utiliser
      https://www.php.net/manual/fr/function.ldap-search.php#112191

      A noter que les erreurs que tu nous montres jusqu'à maintenant semblent plus liés à des soucis de paramétrages/identifiants qu'à des soucis de code php....
      Hors.. nous ne sommes pas admin de ton réseau et ne pourrons pas t'aider à trouver les identifiants à utiliser !
      0
  15. yossra
     
    est-il possible de se connecter a l'active directory sans utiliser le serveur ldap?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      ben.... non.....
      Ldap... ça fonctionne avec un AD

      Active Directory est un annuaire au format Microsoft qui a pour objectif de stocker des données qualifiées d’objets.
      Quant au LDAP, il s’agit d’un protocole d’accès aux informations. L’outil permet d’échanger des renseignements entre les annuaires compatibles au protocole.
      0
  16. yossra
     
    est si AD fonctionne avec un autre serveur?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      LDAP est le protocole utilisé pour communiquer avec l'AD.
      ici, le serveur LDAP, c'est l'ordinateur sur lequel fonctionne l'AD.
      est-ce réellement le serveur sur lequel tourne Apache?
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Et bien quoi ?

      Le PC qui héberge ton code php se trouve sur le même réseau ?
      Les informations utilisées dans ton script PHP sont les bonnes ?
      As tu demandé aux admin de ton réseau ?
      0
  17. yossra
     
    Le PC qui héberge ton code php se trouve sur le même réseau ?oui il se trouve sur un reseau privé
    Les informations utilisées dans ton script PHP sont les bonnes ?non parce que la société ne donne pas des informations
    As tu demandé aux admin de ton réseau ?non
    quelle les infomations que j'ai besoin pour connecter a l' AD
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Et bien il te faut les informations qui correspondent à ces variables
      
      $server = "localhost";
         $port = "389";
        $racine = "o=inet, c=home";
         $rootdn = "cn=Stage,o=inet, c=home";
      
         $rootpw = "Stage2020";
      
      
      0
  18. yossra
     
    comment je peux changer cette partie de code pour faire ca
    //Get standard users and contacts
        $search_filter ='(|(objectCategory=person)(objectCategory=contact))';
      
     //Connect to LDAP
     $result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter);
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      le code fonctionne bien, sans erreur, tel qu'il est?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        si oui, que sais-tu de l'utilisateur que tu veux filtrer? tu as son Username, comme il s'affiche dans la première colonne de la table?

        si oui, peut-être ainsi:
        $search_filter = "sAMAccountName=".$userName;
        0
  • 1
  • 2