Autenticación con PHP + LDAP

Saludos, Tiempo sin escribir, ahora voy a tratar rapidamente la autenticación con PHP contra LDAP.

Primero tienes que tener un servidor con LDAP instalado y funcionando, y como este post no es sobre la instalación de un servidor de autenticación LDAP, no voy a tratar sobre eso. Así que vamos a asumir que tenemos un servidor corriendo completamente con LDAP.

El primer paso para autenticación de PHP contra LDAP es la realización de un formulario de entrada. Éste formulario debe tener dos campos: usuario y clave, así que voy a colocar uno que diseñe.


<table>
<tr><td></td></tr>
</table>
<center><br><br><br><br>

<table cellspacing="0" cellpadding="0">
<tr><td colspan="2" align="center" class="texto_items"> 

<div>
MiauLDAP
<div class="text_mat">by dk4nno</div>
</div>
</td>

<td width="10"></td>
<td width="1" bgcolor="#CCCCCC"></td>
<td width="10"></td>

<td>
<table>

<form action="index.php?accion=verificacion" method="POST">

<tr><td class="texto_items">Usuario</td><td><input class="texto_inputs" type="text" name="usuario" size="20"  class="imputbox"></td><tr>
<tr><td class="texto_items">Clave</td><td><input class="texto_inputs" type="password" name="clave" size="20"  class="imputbox"></td>
</tr>
<tr><td colspan="2" align="center">
<div class="text_error"><?echo $error_LDAP;?></div>
<input name="submit" type="submit" value="  Entrar  " class="botones">
</td>
</tr>

</table>

</td></tr>
</table>

<br>
<div class="text_mat"><font color=666666>MiauLDAP | Autenticacion en PHP + LDAP | para quien lo necesite | Venezuela Edo. Trujillo</font>
</div>

Despúes que tengamos el formulario debemos realizar un verificador o chequeador; éste tomará los datos enviados por el formulario anterior y verificará contra LDAP, de la siguiente manera:


// variables de autenticacion y LDAP
	$ldap['user']              = $_POST["usuario"];
    $ldap['pass']              = $_POST["clave"];
    $ldap['host']              = 'servidor.google.com.ve'; // nombre del host o servidor
    $ldap['port']              = 1426541; // puerto del LDAP en el servidor
    $ldap['dn']                = 'uid='.$ldap['user'].',ou=people,dc=google,dc=com,dc=ve'; // modificar respecto a los valores del LDAP
    $ldap['base']              = ' ';

	// conexion a ldap
     $ldap['conn'] = ldap_connect( $ldap['host'], $ldap['port'] );
     ldap_set_option($ldap['conn'], LDAP_OPT_PROTOCOL_VERSION, 3);

	// match de usuario y password
     $ldap['bind'] = ldap_bind( $ldap['conn'], $ldap['dn'], $ldap['pass'] );
	
	
	if ($ldap['bind']){
		
    session_start();



    session_cache_limiter('nocache,private');    



    $_SESSION['usuario']=$_POST["usuario"];



    $_SESSION['clave']=$_POST["clave"];

    $_SESSION['usuario_fecha']= date("Y-n-j H:i:s");

        

    $pag=$_SERVER['PHP_SELF'];
	
	echo "<head><meta http-equiv=\"refresh\" content=\"0; url=asegurada.php\"></head>";
			
		}
	else{
			//echo "LDAP bind failed...";
	        print "<body onload=\"window.location='index.php?error=Acceso denegado';\">";
        	print "</body>";
        	exit();
   	}    

Ya al tener estas acciones, tenemos todo listo. como pueden ver en esta linea,

echo "<head><meta http-equiv=\"refresh\" content=\"0; url=asegurada.php\"></head>";

tenemos la url con “asegurada.php” que sería nuestra página o sitio privado. a este sitio le colocaremos la validacion de la session, que estará en otro archivo que llamaremos “chequeo.php” y contiene el siguiente código:


session_start();

session_cache_limiter('nocache,private');  

if (!isset($_SESSION['usuario']) && !isset($_SESSION['clave'])){

session_destroy();
	echo "<head><meta http-equiv=\"refresh\" content=\"0; url=index.php?error=Su sesion expiro\"></head>";
exit;

}

Para la validación del la session en las diferentes páginas del sitios o sistema, debes agregar la siguiente línea al comienzo del documento:


include "chequeo.php"


Y listo, allí tienes una autenticación básica con LDAP, como sé que a veces es dificil ubicarse en el código separado, les colocare un .zip con todos los archivos que necesitas para poder tener lo que quieres. Puedes modificarlo y hacer lo que te de la gana con él, y te sugiero que modifiques los nombres de las variables, y todo lo que puedas.

Espero que les sirva de algo este post….

PD: la autenticación en este caso se realizó con un servidor con zimbra

Aqui les va el link para descargar el codigo completo..

http://rapidshare.com/files/357618034/miauldap.zip.html

Saludos..

NOTA (21/03/2012|4:28pm): Los archivos fueron eliminados de rapidshare (lamentablemente), pero son bastantes sencillos de realizar pues todo esta explicado. Si no puedes hacer el esfuerzo de copiar y pegar en un .php, estamos mal… Traten de copiar el código y pegarlo en un .php y dar retoques.. por ahora no alcanzo a subir los archivos en algún lugar…

Anuncios