<?php
// clase ldap
// hide@address.com
// La Habana, Cuba. 2007
class LDAP
{
var $servidor_ldap;
var $dn_ldap;
var $clave_ldap;
var $conexion;
var $CONTEXTO;
var $ATRIBUTOS_USUARIO_LDAP;
var $DN_NOMBRE_USUARIO_LDAP;
var $DN_APELLIDO_USUARIO_LDAP;
var $DN_CORREO_USUARIO_LDAP;
var $DN_OCUPACION_USUARIO_LDAP;
var $DN_FACULTAD;
var $DATOS_USUARIO_LDAP = array();
function LDAP()
{
// modificar estos datos de config segĂșn su dominio
$this->servidor_ldap = 'my_ldap_server';
$this->dn_ldap = 'cn=ad search, ou=Systems, ou=UCI Domain Impersonals, dc=uci, dc=cu';
$this->clave_ldap = 'my_ldap_clave';
$this->CONTEXTO = 'DC=uci,DC=cu';
$this->ATRIBUTOS_USUARIO_LDAP = 'samaccountname';
$this->DN_NOMBRE_USUARIO_LDAP = 'givenname';
$this->DN_APELLIDO_USUARIO_LDAP = 'sn';
$this->DN_CORREO_USUARIO_LDAP = 'mail';
$this->DN_OCUPACION_USUARIO_LDAP = 'title';
$this->DN_FACULTAD ='department';
$this->DATOS_USUARIO_LDAP =
array($this->DN_NOMBRE_USUARIO_LDAP,
$this->DN_APELLIDO_USUARIO_LDAP,
$this->DN_CORREO_USUARIO_LDAP,
$this->DN_OCUPACION_USUARIO_LDAP,
$this->DN_FACULTAD
);
$this->Conectar();
}
function Conectar()
{
$this->conexion = ldap_connect($this->servidor_ldap);
ldap_set_option( $this->conexion, LDAP_OPT_PROTOCOL_VERSION, 3 );
ldap_set_option($this->conexion, LDAP_OPT_REFERRALS, 0 );
$resultado = ldap_bind($this->conexion, $this->dn_ldap, $this->clave_ldap);
}
function Obtener_Resultado($usuario)
{
$resultado_busqueda = ldap_search($this->conexion, $this->CONTEXTO, "$this->ATRIBUTOS_USUARIO_LDAP=$usuario", $this->DATOS_USUARIO_LDAP);
$entrada = ldap_first_entry($this->conexion, $resultado_busqueda);
return $entrada;
}
function Obtener_Datos_Usuario($usuario)
{
$USUARIO_DOMINIO = $usuario;
$ent = $this->Obtener_Resultado($USUARIO_DOMINIO);
$datos = array();
if($ent)
{
$dn_usuario = ldap_get_dn($this->conexion, $ent);
foreach($this->DATOS_USUARIO_LDAP as $clave => $value)
{
$valores_atributos = ldap_get_values($this->conexion, $ent, $value);
$datos[] = $valores_atributos[0];
}
}
return $datos;
}
function Verificar_Datos($usuario, $contrasena)
{
$USUARIO_DOMINIO = $usuario;
$CLAVE_USUARIO_DOMINIO = $contrasena;
if (!is_null($USUARIO_DOMINIO) && $CLAVE_USUARIO_DOMINIO != "" )
{
$ent = $this->Obtener_Resultado($USUARIO_DOMINIO);
if($ent)
{
$dn_usuario = ldap_get_dn($this->conexion, $ent);
$acceso = ldap_bind($this->conexion, $dn_usuario, $CLAVE_USUARIO_DOMINIO);
if($acceso)
return true;
}
}
else return false;
}
}
?>