« avril 2009
lunmarmerjeuvensamdim
12345
6789101112
13141516171819
20212223242526
27282930

Blog Bazar


Add to Technorati Favorites

mercredi 1 avril 2009

Comment effectuer une identification d'un utilisateur Active Directory en PHP via LDAP

Si vous arrivez ici, c'est que sans doute vous avez comme moi cherché sur Internet comment effectuer une authentification en LDAP sur une base Active Directory, en PHP. Difficile car on trouve beaucoup de bruit avec ces termes !

Voici ce que j'ai fini par écrire. Le principe essentiel est d'effectuer une recherche du DN, puis de re-effectuer un "ldap_bind". Si cela ne fonctionne pas dans votre cas, faites le moi savoir via les commentaires!

Le petit bout de code:


// modify these values
define("LDAP_HOSTNAME","192.168.0.10"); // LDAP server
define("LDAP_DN", 		"DC=xx,DC=yy,DC=zz"); // LDAP DN
define("LDAP_CN", 		"admin");  // LDAP admin name
define("LDAP_CN_PASS", 	"password");  // LDAP admin password

function LDAP_identify( $login, $password) {
  $ldaprdn  = 'CN='.LDAP_CN.",CN=Users,".LDAP_DN;   // DN ou RDN LDAP
  $ldappass = LDAP_CN_PASS;  // admin password
  $ld = ldap_connect( LDAP_HOSTNAME);
  if (!$ld)  {
	echo "Can't connect on LDAP server";
	return false;
  }

  ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3);
  ldap_set_option($ld, LDAP_OPT_REFERRALS, 0);
  if (!ldap_bind( $ld, $ldaprdn, $ldappass)) {
	echo "Can't identify on LDAP server";
	ldap_close( $ld);
	return false;
  }

  $r=ldap_search($ld, LDAP_DN, "(sAMAccountName=$login)");
  $info = ldap_get_entries( $ld, $r);
  if ($info)  {
	/*
	** If you want to get some info
	$id = $fullName = $mail = '';
	if (isset($info[0]['sn'])) $id =$info[0]['sn'][0];
	if (isset($info[0]['cn'])) $fullName =$info[0]['cn'][0];
	if (isset($info[0]['mail'])) $mail =$info[0]['mail'][0];
	*/
		
	$DN = '';
	if (isset($info[0]['dn'])) $DN =$info[0]['dn'];
		
	// Active Directory accept empty password !?
	$password = trim($password); 
	if (empty($password) || empty($DN) || !ldap_bind( $ld, $DN, $password)) {
		echo "Erreur d'identification";
		ldap_close( $ld);
		return false;
	}

	// here, you're identified
	ldap_close($ld);
	return true;
  }

  ldap_close( $ld);
  return false;
}

dimanche 25 mai 2008

Extension de debug PHP Zend Toolbar pour Firefox 3

Mise à jour

Zend a mis à jour la version de son extension qui supporte maintenant Firefox3 : http://www.zend.com/download/155

La suite peut tout de même être intéressante le jour ou FireFox passe en version 3.1 ou 4.0 !!


Une des raisons pour lesquelles je ne voulais (pouvais ?) pas passer sous Firefox 3 est la perte de mon environnement de Debug de Zend Studio. La barre de navigation de Zend étant en effet bloquée à la version 2.0 de Firefox.

Je ne pense pas avoir le "droit" de diffuser un fichier xpi d'installation "patché", aussi, je vous propose de lister les opérations nécessaires à cette "mise à jour", car moyennant une petite manipulation, cette barre fonctionne finalement aussi sous Firefox3. Voici les étapes à suivre pour se "refaire" une extension qui autorise le fonctionnement sour Firefox 3 (à vos risques et périls ;) ).

1) Récupérez la dernière version de l'extension:

- Téléchargez, mais n'installez pas. Utilisez Internet Explorer ou Safari par exemple.

http://downloads.zend.com/studio/MozillaToolbar/ZendFirefoxToolbar-2.0.2.xpi

2) Décompressez l'archive:

- Tapez la commande:

unzip ZendFirefoxToolbar-2.0.2.xpi -d ZendToolbar2

3) Allez dans le dossier ZendToolbar2 ainsi créé

- Editez install.rdf:

<Description about="urn:mozilla:install-manifest">
    <em:name>Zend Studio Toolbar</em:name>
    <em:description>Provides Zend Studio integration</em:description>
    <em:creator>Zend Technologies</em:creator>
    <em:homepageURL>http://www.zend.com</em:homepageURL>
    <em:version>2.0.2</em:version>
    <em:id>{3c9761ad-a43d-4447-b924-f5d83cb48063}</em:id>

    <em:iconURL>chrome://zend/content/images/zde_icon32.png</em:iconURL>
    <em:optionsURL>chrome://zend/content/settings.xul</em:optionsURL>
    <em:aboutURL>chrome://zend/content/about.xul</em:aboutURL>
    <em:updateURL>http://downloads.zend.com/studio/MozillaToolbar/update.rdf</em:updateURL>

    <em:targetApplication>
        <Description>
            <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
            <em:minVersion>1.5</em:minVersion>
            <em:maxVersion>2.0+</em:maxVersion>
        </Description>
    </em:targetApplication>
</Description>

- Modifiez ainsi:

 <em:updateURL>https://downloads.zend.com/studio/MozillaToolbar/update.rdf</em:updateURL>

et

 <em:maxVersion>3.0+</em:maxVersion>

4) Allez dans le dossier "chrome"

- Tapez la commande:

 jar -xf zend.jar

- Editez content/toolbar.js

- Commentez ainsi dans les fonction "function zendDebug(contextMenu) et function zendProfile()" les deux lignes suivantes:

    // document.getElementById("zendDebug").disabled = true;
    // document.getElementById("zendProfile").disabled = true;

- Effacez le fichier zend.jar

- Tapez la commande:

jar -cf zend.jar content/

- Effacez le dossier "content"

5) Remontez au niveau supérieur (ZendToolbar2)

- Tapez la commande:

zip -r ZendFirefox3_Toolbar-2.xpi chrome chrome.manifest install.rdf

6) Installez ce fichier ZendFirefox3_Toolbar-2.xpi ainsi obtenu!

- Glissez le fichier dans une fenêtre de Firefox3.

dimanche 30 septembre 2007

Un debugger pour PHP sous Mac

Quelques errances dans le monde de l'Open Source, pour obtenir un debugger PHP sur mon Mac (faut-il le re-préciser?).
Beaucoup de mes remarques sont en toute vraisemblance pertinents sous Linux, mais je ne peux pas l'affirmer.

Lire la suite