Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/08/2011, 15h38   #1
Invité de passage
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 2
Points : 2
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 :
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;
 
}
}
?>
Cyr69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h02   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
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))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 11h34   #3
Invité de passage
 
Inscription : décembre 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 30
Points : 2
Points : 2
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 :
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 :
1
2
3
 
$entrees = @ldap_first_entry($connect, $search); 
$lockoutTime = @ldap_get_values($connect, $entrees, "lockoutTime");
Cyr69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h56.


 
 
 
 
Partenaires

Hébergement Web