Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
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 26/09/2008, 09h54   #1
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Par défaut [LDAP] Attribut pour mot de passe

Bonjour
Voilà, j'essai de lier le php avec l'ad, j'ai réussi a me connecter .
Au moment de l'identification du login et mot de passe, j'ai une erreur
Citation:
No such attribute
j'ai compris que ça venai du mot de passe, il n'a pas d'attribut, j'ai pourtant essayé "userPassword" , ou encore "password" mais rien n'y fait.

Alors , la question que je me posse, est , quel est l'attribut du mot de passe ?
serait-il cripter ....
Merci d'avance pour vos réponses.
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h17   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Bonjour

Sauf configuration spéciale de ton annuaire, le mot de passe s'écrit de façon classique. Pourrait-on avoir un brin de code ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h31   #3
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Merci de me repondre
Voici mon code :
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 
 
// connexion ad
$ds = ldap_connect ("service.domaine.fr");
 
//non anonyme
$dn = "CN=nom,DC=domaine,DC=fr";
$pwd = "mdp";
 
if ($ds)
{
	if  ((!isset($_SERVER['PHP_AUTH_USER'])) || (!isset($_SERVER['PHP_AUTH_PW'])) || ( $_SERVER['PHP_AUTH_USER']."" == "" || $_SERVER['PHP_AUTH_PW']."" == "" )) 
		{
			   header('WWW-Authenticate: Basic realm="vous identifiez"');
			   header('HTTP/1.0 401 Unauthorized');
			   echo 'Acces annulé';
			   exit; 
		} 
	$bind = ldap_bind ($ds, $dn, $pwd);
 
if ($bind)
{	
	$mdp = $_SERVER["PHP_AUTH_PW"] ;
	$attr = "userPassword"; 
	$value = $mdp ;
 
	//comparaison du nom 
	$resultat = ldap_compare($ds, $dn, $attr, $value);
 
	//verif le mdp 
		if ($resultat === -1) 
			{
			echo "Erreur : ".ldap_error($ds);
			}
		elseif ($resultat === TRUE)
			{
			echo "Login correct";
			}	
		elseif ($resultat === FALSE)
			{
			echo "mdp errone";
			}
		else
	 		{
        	echo "Impossible de se connecter au serveur LDAP.";
    		}  
}
	//Fermeture de la connexion
	ldap_close ($ds);
}
?>

je bloque au niveau de l'attribut du mot de passe
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 13h00   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Tu es sur que le nom de l'attribut est bien "userPassword" ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 13h37   #5
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Non, justement, je ne sais pas c'est quoi,
j'ai mis "userPassword" car je l'ai vu sur le net !

Comment et ou je peu voir quel attribut est-il ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 13h47   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Il faut que tu connaisses le nom des attributs disponibles sur ton annuaire LDAP. Tu n'as pas un exemple de données, quelque chose comme ça ?

Soit dit en passant, dans la mesure où tu es déjà attaché à l'annuaire par ldap_bind, à quoi tu sers cette vérification ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 14h16   #7
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
C'est possible que je me suis trompé sur toute la longueur,

Ceux que j'essai de mettre au point, c'est dans un cas d'un intranet.
Je veux me connecter a cette intranet en utilisant le login et le mot de passe de l'active directory.

Sinon je sais pas où je peu trouver un exemple de donnée, pour info, je peu peut etre utiliser ldp.exe pour avoir des infos.

Le ldap_bind me sert a verifier que je me connecte bien a l'ad !!...enfin, je crois
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2009, 11h30   #8
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Je relance le sujet , car je suis de nouveau sur le même problématique
Mon code :

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
<?php
/*-----------parameters pour la Connexion AD--------------*/
$host = "ldap://monentreprise.fr";
$user = $_POST["login"]."@monentreprise.fr";
$pass = $_POST["password"];
$ds = ldap_connect($host, 389) or die("La connexion a échouée!");	
    	/*----------------------Identification------------------------*/
        if ($ds) 
        {
			if(ldap_bind($ds))
			{			
					$dn = "CN=toto,OU=GPO Internet,DC=monentreprise,DC=fr"; 
					$value = $_POST["password"];
					$attr = "password"; 
					//comparaison  des valeurs
					$resultat = ldap_compare($ds, $dn, $attr, $value);
 
 
					if ($resultat === -1) 
					{
						echo "Erreur: " . ldap_error($ds);
					} elseif ($resultat === TRUE) 
					{
						echo "Password correct<br>";
 
					} elseif ($resultat === true) 
					{
							echo "Mot de passe incorrect ";
					}
 
			}else
			{
				echo 'erreur'; 
			}	
			ldap_close($ds);
 
         } else 
		 {
         	echo "Nom d'utilisateur ou mot de passe erroné .";
         }
?>
avec comme message d'erreur:
Citation:
ldap_compare(): Compare: No such attribute
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2009, 11h35   #9
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Toujours la même question : es-tu sûr du nom de ton attribut ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2009, 11h52   #10
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Toujours la même réponse, je ne sais pas où je dois aller pour vérifié son attribut !

Dans l'active directory ? ADSI EDIT ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2009, 12h09   #11
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Je ne sais pas vraiment. Normalement l'utilisation d'un LDAP, c'est comme l'utilisation d'une base de données : tu connais la structure avant...

Il y a bien la fonction ldap_get_attributes, mais elle nécessite une recherche valide...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2009, 15h00   #12
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
J'ai suivi les conseil, du coup , j'ai du utiliser la ldap_search ,puis ldap_get_attributes.

Voici mes attributs :
Citation:
objectClass
cn
sn
givenName
distinguishedName
instanceType
whenCreated
whenChanged
displayName
uSNCreated
memberOf
uSNChanged
homeMTA
proxyAddresses
homeMDB
mDBUseDefaults
mailNickname
protocolSettings
name
objectGUID
userAccountControl
badPwdCount
codePage
countryCode
badPasswordTime
lastLogoff
lastLogon
pwdLastSet
primaryGroupID
objectSid
adminCount
accountExpires
logonCount
sAMAccountName
sAMAccountType
showInAddressBook
legacyExchangeDN
userPrincipalName
objectCategory
dSCorePropagationData
lastLogonTimestamp
textEncodedORAddress
mail
msExchPoliciesIncluded
msExchHomeServerName
msExchALObjectVersion
msExchMailboxSecurityDescriptor
msExchUserAccountControl
msExchMailboxGuid
Comment trouver l'attribut du mot de passe ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2009, 17h39   #13
Futur Membre du Club
 
Étudiant
Inscription : avril 2009
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 105
Points : 19
Points : 19
Par défaut demande d'aide svp

bonjour

j'aimerais savoir comment tu as fais pour afficher les attributs de l'annuaire .

merci d'avance
ache93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2009, 20h10   #14
Invité de passage
 
Inscription : août 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 2
Points : 2
Points : 2
Bonjour,

Pour voir les attributs Active Directory, il suffit à partir du controleur de domaine ou d'un PC où sont installés les outils d'administrations windows serveur, d'executer "mmc"

Dans la fenetre console, cliquez sur "fichier" puis "ajouter/supprimer un composant logiciel enfichable" puis cliquez sur le bouton "ajouter" dans la fenetre "ajouter/supprimer....."

Recherchez et sélectionnez le composant logiciel "schéma Active Directory"

fermez la fenetre puis "OK"

développez ensuite le schéma pour rechercher la classe "user"
cliquez dessus pour voir tous les attributs associés.

Pour en revenir à la première question posée, la réponse est dans la question !

D'après le code de nawak.seb, il y a une connexion faite sur le domaine avec un compte admin,( j'imagine ), et qui à l'air de réussir, puis une comparaison avec les attributs user et mdp d'un autre user..

Rien ne sert de faire une connexion avec un compte admin, autant le faire directement avec le compte en question.
Si la connexion au serveur LDAP réussi, c'est que le user et le mdp sont valide sinon la connexion au serveur LDAP échoue.

Si la connexion est faite avec un compte utilisateur de base, l'accès ne se fera qu'en lecture.

Si la connexion est faite avec un compte adminstrateur, l'accès se fera en lecture/ecriture

En concequence, tout le code que vous mettrez après la connexion au LDAP aura un impact en fonction du compte de connexion.

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
 
<?php
 
// nom d'utilisateur
$identifiant = "Nom d'utilisateur";
 
// mot de passe utilisateur
$auth_pass = "Mot de passe utilisateur";
 
// nom de domaine
$domaine = "nom_de_domaine.org";
 
// serveur ldap
$ldap_server = "ldap://nom_du_serveur.nom_de_domaine.org";
 
// nom d'utilisateur + @ + nom de domaine
$auth_user = $identifiant."@".$domaine;
 
// nom de domaine dn
$base_dn = "DC=nom_de_domaine, DC=org";
 
// connexion au serveur ldap
if (!($connect=@ldap_connect($ldap_server))) {
     die("Could not connect to ldap server");
}
 
// resultat de connexion
 
if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
// l'utilisateur ou le mdp est refusé
echo "Nom d'utilisateur ou mot de passe refusé !";
} else {
// l'utilisateur ou le mdp est accepté
echo "Utilisateur authentifié avec succès !";
}
 
?>
Bien entendu, vous récupérez l'identifiant et le mot de passe depuis la fenetre d'authentification ou depuis un formulaire.

Notez que la connexion au LDAP se fait sans cryptage et que le mot de passe transite en clair par le port TCP 389

Pour passer en SSL, il faut remplacer le "ldap" de la variable $ldap_server par "ldaps" et dans ce cas, le mot de passe transitera en crypté par le port TCP 636.

Assurez vous dans ce cas que les ports sont bien ouverts sinon la connexion echouera.

Précision: bien que l'atribut "userPassword" existe dans le schéma Active Directory, il ne stocke pas le mot de passe donc rien ne sert d'éssayer de faire des comparaisons.

C'est Kerberos qui se charge de valider ou non un utilisateur.
Et c'est justement le point fort de Microsoft au niveau de la sécurité.

A moins d'utiliser des outils intermédiaires, cracks et autre outils de piratages, il n'est normalement pas possible de récupérer ou de lire en clair le mot de passe. (même la console "Utilisateurs et Ordinateurs Active Directory" ne le fait pas)

Ceci dit, si quelqu'un connait la solution pour récupérer le mot de passe dans un attribut, je suis preneur a 10000%

N'oubliez pas de fermer la connexion LDAP à la fin de votre code.

J'espère que ça vous aura aidé car j'ai moi même planché plusieurs jours sur cette problématique.
rmarc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h19.


 
 
 
 
Partenaires

Hébergement Web