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 :

PHP + LDAP - Vérifier champ lockoutTime pour vérifier si un compte est vérouillé.


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 62
    Points : 38
    Points
    38
    Par défaut PHP + LDAP - Vérifier champ lockoutTime pour vérifier si un compte est vérouillé.
    Bonjour à tous,

    J'utilise les fonctionnalités de PHP - LDAP pour me connecter à des applications en interne. Mon problème est de pouvoir vérifier si un compte est vérouillé ou non à l'aide du champ lockoutTime de l'AD.

    Le problème que l'on a est qu'il est impossible de récupérer la valeur de ce champ (via LDAPBrower 4.5 je peux voir si le compte est vérouillé dans ce champ, lorsque le compte est vérouillé affiche un exemple du genre :
    lockoutTime: 10/08/2011 12:54:01 problème c'est que je ne peux ressortir comme information que certains champs comme le mail le sAMAccountName etc. Le champ lockoutTime est quand à lui vide à chaque fois que je lui fais un echo.


    Merci pour votre aide

    __________________________________________________________

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
    //Gestion des données en sessions
    session_start();
     
    //L'adresse du serveur LDAP 
    $ldap_server = "******";
     
    //Identifiant LDAP pour parcourir (lecture seule)
    $auth_user = "*****";
    $auth_pass = "*******";
     
    //Vérification contenu de login et password si ok : mise en SESSION
    if($_POST["login"] !="" && $_POST["password"] != ""){
    	$_SESSION["login"] = $_POST["login"];
    	$_SESSION["password"] = $_POST["password"];
    }
    else {header("location:index.php?erreur=badpassword"); 
    exit; //Redirection à la page de login / Possibilité de personnaliser les messages d'erreurs
    }
    //Base DN de ***
    $base_dn = "OU=********,DC=*****,DC=****";
     
    //Filtrage qui permet de vérifier si l'utilisateur est bien dans le groupe de l'application (restriction d'accès en fonction des applis)
    $filter = "(&(objectCategory=user)(sAMAccountName=".$_SESSION["login"].")(memberOf=CN=*******,OU=****,OU=****,OU=****,DC=****,DC=****))";
     
    //Connexion à la Base LDAP
    if(!($connect=@ldap_connect($ldap_server))) die("Could not connect to ldap server");
    ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
     
    //Authentification avec les logins LDAP
    if(!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) die("Unable to bind to server");
     
    //Recherche si le login existe et qu'il soit bien dans un groupe spécifique à l'application grace au filtre
    if (!($search=@ldap_search($connect, $base_dn, $filter))) die("Unable to search ldap server");
     
    //Retourne le nombre d'enregistrement
    $info = @ldap_get_entries($connect, $search); 
     
    //Si l'utilisateur existe, on redirige sur la 2e page pour authentification avec les logins et password de l'utilisateur
    if($info["count"] == 1){ // Vérification du nom 
    $_SESSION["dn"] = $info[0]["distinguishedname"][0]; //Récupération du DN de l'utilisateur pour Authentification sur la 2e page (OBLIGATOIRE)
     
    if($info[0]["lockoutTime"][0] =='') 
    	header('location:ldap_login.php'); //Redirection sur la 2e page
    	else header('location:index.php?erreur=session');
    }
     
    //Sinon redigier sur la page d'index avec une information comme quoi l'utilisateur n'est pas dans le groupe (contacter l'admin réseau)
    else {
    if($info["count"] == 0) {
    header('location:index.php?erreur=groupe');
     
    exit;
    }
     
     
    else {
    header("location:index.php?erreur=session");
    exit;
     
    }
    }
    ?>

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    le user avec qui tu te connectes au ldap a t il les droits de lecture sur ces champs ?

    Voir aussi peut être du coté du serveur ldap pour autoriser certains champs en lecture...
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 62
    Points : 38
    Points
    38
    Par défaut [RESOLUE]
    Bonjour,

    Concernant l'user oui il a tout les droits, le problème ne venait pas de là, j'ai trouvé la solution :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
    //Gestion des données en sessions
    session_start();
     
    //L'adresse du serveur LDAP
    $ldap_server = "ldap://*******";
     
    //Identifiant LDAP
    $auth_user = "***********";
    $auth_pass = "***********";
     
    //Vérification contenu de login et password si ok : mise en SESSION
    if($_POST["login"] !="" && $_POST["password"] != ""){
    	$_SESSION["login"] = $_POST["login"];
    	$_SESSION["password"] = $_POST["password"];
    }
    else {header("location:index.php?erreur=badpassword"); 
    exit; //Redirection à la page de login / Possibilité de personnaliser les messages d'erreurs
    }
    //Base DN 
    $base_dn = "OU=*****,DC=****,DC=******";
     
    //Filtrage qui permet de vérifier si l'utilisateur est bien dans le groupe de l'application (restriction d'accès en fonction des applis)
    $filter = "(&(objectCategory=user)(sAMAccountName=".$_SESSION["login"].")(memberOf=CN=*******,OU=*********,OU=*******,OU=*******,DC=******,DC=*******))";
     
    //Connexion à la Base LDAP
    if(!($connect=@ldap_connect($ldap_server))) die("Could not connect to ldap server");
    ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
     
    //Authentification avec les logins LDAP
    if(!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) die("Unable to bind to server");
     
    //Recherche si le login existe et qu'il soit bien dans un groupe spécifique à l'application grace au filtre
    if (!($search=@ldap_search($connect, $base_dn, $filter))) die("Unable to search ldap server");
     
    //Retourne le nombre d'enregistrement
    $info = @ldap_get_entries($connect, $search); 
    $entrees = @ldap_first_entry($connect, $search); 
    $lockoutTime = @ldap_get_values($connect, $entrees, "lockoutTime");
    //Si l'utilisateur existe  on redirige sur la 2e page pour authentification avec le login et le password de l'utilisateur.
    if($info["count"] == 1){
    	$_SESSION["dn"] = $info[0]["distinguishedname"][0];
    	if($lockoutTime[0] == 0) header('location:ldap_login.php'); 
    	else header('location:index.php?erreur=session');
    }
    else {
    	header('location:index.php?erreur=groupe');
    }
    ?>

    Il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $entrees = @ldap_first_entry($connect, $search); 
    $lockoutTime = @ldap_get_values($connect, $entrees, "lockoutTime");

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

Discussions similaires

  1. [MySQL] Probleme pour vérifier l'existence d'un champ
    Par iceman2001 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/08/2010, 17h54
  2. script pour vérifier si un champ existe déjà dans une BDD
    Par tomguiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2009, 13h19
  3. [MySQL] Requête pour vérifier base de donné Mysql en php
    Par srab2pac dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/06/2008, 09h48
  4. [LDAP] Requête pour vérifier le login et mot de passe
    Par NiGHtyWolf dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/03/2007, 22h44
  5. Réponses: 6
    Dernier message: 12/01/2007, 21h34

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