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;
 
}
}
?>