je suis entrain de créer un Intranet avec une identification de l'utilisateur via l'Active Directory mais j'ai un problème lors de la connection ... si quelqu'un pouvait m'aider ;)
<?php
$server = "localhost";
$rootdn = "cn=Administrateur, o=eabjm, c com";
$rootpw = "passwd";
$ds=ldap_connect($server);
if ($ds) {
$r=ldap_bind($ds,$rootdn,$rootpw);
// données à comparer
$dn="cn=Pillou Jean-Francois, o=eabjm,c=com";
$valeur="MonMot2Passe";
$attribut="password";
// Comparaison
$resultat=ldap_compare($ds, $dn, $attribut, $valeur);
if ($resultat == -1) {
echo "Erreur:".ldap_error($ds);
}elseif ($resultat == TRUE) {
echo "Le mot de passe est correct";
}else{
echo "Le mot de passe est erronné...";
}
ldap_close($ds);
} else {
echo "Connexion au serveur LDAP impossible";
}
?>
et voila le message d'erreur :
Warning: LDAP: Unable to bind to server: Invalid credentials in d:\www\eleves\index.php on line 17
Warning: LDAP: Compare operation could not be completed: No such attribute in d:\www\eleves\index.php on line 23
Erreur:No such attribute
j'ai tourner dans tous les sens le prob je cherche sur internet mais je trouve rien ...
Merci d'avance pour votre aide ;)
alors je me dit que j'ai un problème d'identification ... mais je comprend pas pourquoi ... je viens d'essayer de me connecter avec un soft sur l'active directory et ca ne fonctionne pas non plus ...
il manque un egal sur la ligne (mais c uniquement sur le forum) :
StreM
Messages postés515Date d'inscriptionlundi 18 octobre 2004StatutMembreDernière intervention28 février 2007124 1 sept. 2005 à 15:00
Invalid credentials, c'est un probleme de droits d'accès, ca je pense.
Essaie de mettre l'utilisateur IUSR_nomdetamachine dans le groupe administrateurs pour voir (a ne pas garder comme ca, c'est une enorme faille de sécurité, c'est vraiment juste pour voir)
Mais si avec ton soft tu n'arrives pas a te connecter et que tu es administrateur, là y'a un souci...
bon j'arrive a me connecter a l'active directory ... ca c'est fait ;)
mais maintenant j'ai un probleme sur : ldap_compare()
voici mon code :
<?
$ldaprdn = 'ldap'; // user
$ldappass = 'mdp'; // password
// connect to ldap server
$ldapconn = ldap_connect("serveur.eabjm.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
@$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
echo "Connexion LDAP ... OK<br>";
// preparation des données
$dn="cn=test, o=eabjm,c=com";
$valeur="test";
$attribut="password";
// Comparaison du mot de passe à celui dans l'annuaire
$resultat=ldap_compare($ldapconn, $dn, $attribut, $valeur);
if ($resultat == -1) {
echo "Erreur : ".ldap_error($ldapconn);
}else if ($resultat == TRUE){
echo "Le mot de passe est correct";
}else{
echo "Le mot de passe est erronné...";
}
ldap_close($ldapconn);
} else {
echo "Connexion LDAP ... ECHEC";
}
}
?>
L'erreur affichée est la suivante : Warning: LDAP: Compare operation could not be completed: No such attribute in d:\www\eleves\index.php on line 30
Bonjour neo.t
si tu as un peu de temps à m'accorder :
peux-tu m'aiguiller sur l'installation du module ldap (moi je n'arrive même pas à me connecter!). J'ai coché l'extension php_ldap et copié les 2 fichiers .dll vers sytem32, mais impossible de télécharger les fameux modules de l'University of Michigan
je ne suis pas sûr de ma réponse, et tardive en plus mais bon c'est de circonstance:
- pour changer un mot de passe ou même l'email via ldap, même en se connectant avec l'utilisateur lui même ca ne marche pas. il faut que l'utilisateur soit du groupe administrateur, ou qu'il ai une délégation de pouvoir sur les attributs demandés dans l'arborescence AD choisi. et quand bien même je trouve plus sécure de ne pas donner à un compte utiliser sur une page web des droits de modification du mot de passe alors que l'user lui même peut le faire aisément et de façon sécurisé =Ctrl+Alt+Suppr-> changement de mot de passe.
- pour les autres données perso, ca se discute en fonction des besoins.
En bref pour tester si un compte existe et l'utilisateur est authentifié, il suffit de se connecter à AD/LDAP avec le login et mot de passe quye fournit l'utilisateur, si echec.. pas de login.. c'est tres simple et ca ne compromet pas des compte d'administration.
Ldap permet avec les droits user, de LIRE la plupart des attributs utiles, de dn, le cn etc..., quand a la partie écriture il faut faire une délégation à un compte restreint spécifique, dont le login et le mot de passe n'apparaissent nul par en clair dans le code de la page web.. même php (ou crypté, et pas uniquement base64, un second level de cryptage perso est conseillé, en include dans une CLASS porte clé qui décrypte les données de connexion de la délégation à la demande).