Foros del Web » Programando para Internet » PHP »

PHP con autenticancion LDAP

Estas en el tema de PHP con autenticancion LDAP en el foro de PHP en Foros del Web. Buenas gente consegui este codigo en internet y lo modique a lo que tengo yo. Código: <?php define('DOMINIO', 'dominio.local); define('DN', 'dc=dominiodc=local'); define('USER', 'perez'); $usuario = ...
  #1 (permalink)  
Antiguo 08/08/2016, 13:18
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 8 años
Puntos: 0
PHP con autenticancion LDAP

Buenas gente consegui este codigo en internet y lo modique a lo que tengo yo.

Código:
<?php
define('DOMINIO', 'dominio.local);
define('DN', 'dc=dominiodc=local');
define('USER', 'perez');
$usuario = USER;

 
        //Asigno variables para accesar al servidor LDAP
    $host = "dominio.local";
    $user = "DOMINIO\Administrator";
    $pswd = "12345678";
	$port = "389";
 
 
    $ad = ldap_connect($host, $port)
    or die("Imposible Conectar");
 
    // Especifico la versión del protocolo LDAP
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3)
    or die ("Imposible asignar el Protocolo LDAP");
 
    // Valido las credenciales para accesar al servidor LDAP
    $bd = ldap_bind($ad, $user, $pswd)
    or die ("Imposible Validar en el Servidor LDAP");
 
    // Creo el DN
    $dn = DN;
 
    // Especifico los parámetros que quiero que me regrese la consulta
    $attrs = array("samaccountname","givenname");
 
    // Creo el filtro para la busqueda
 /*   $filter = "(samaccountname=$usuario)";*/
	$filter="(|(SAMAccountName=".trim($usuario)."))"; 
 
    $search = ldap_search($ad, $dn, $filter, $attrs)
    or die ("");
 
    $entries = ldap_get_entries($ad, $search);
 
    if ($entries["count"] > 0)
        {
        for ($i=0; $i<$entries["count"]; $i++)
                {
            echo "<p>Nombre: ".$entries[$i]["displayname"][0]."<br />";
            echo "Nombre de Usuario: ".$entries[$i]["samaccountname"][0]."<br />";
			echo "Nombre de Usuario: ".$entries[$i]["givenname"][0]."<br />";
            
            }
    } else {
        echo "<p>No se ha encontrado ningun resultado</p>";
    }
    ldap_unbind($ad);
?>
Todo corre perfectametne segun yo. Excepto el for que no hace nada ni siquiera el echo del else se muestra.

Si me pudieran ayudar.
  #2 (permalink)  
Antiguo 08/08/2016, 19:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP con autenticancion LDAP

Sería interesante saber si puedes hacer var_dump($entries) después de asignarle y compartir tus resultados.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/08/2016, 08:05
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 8 años
Puntos: 0
Respuesta: PHP con autenticancion LDAP

Buenas, no muestra el contenido de esa variable.

Entonces quiere decir que hay algo que no esta bien configurado. Lo raro es que tengo otro codigo que valida contra mi dominio y este codigo no lo hace.

Lo que no se es como sacar el Nombre y Apellido que lo consulta. Quiere decir el usuario se logea con ejm

jperez <- Usuario de dominio

Lo que quiero sacar es el nombre y apellido de este seria Jose Perez.

Este codigo hacer la consulta a ver si el usuario de dominio introducido existe.

Código:
<?php 
require_once("config.php"); 
function mailboxpowerloginrd($user,$pass){ 
     $ldaprdn = trim($user).'@'.DOMINIO;  
     $ldappass = trim($pass);  
     $ds = DOMINIO;  
     $dn = DN;   
     $puertoldap = 389;  
     $ldapconn = ldap_connect($ds,$puertoldap); 
       ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);  
       ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);  
       $ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass);  
       if ($ldapbind){ 
         $filter="(|(SAMAccountName=".trim($user)."))"; 
         $fields = array("SAMAccountName");  
         $sr = @ldap_search($ldapconn, $dn, $filter, $fields);  
         $info = @ldap_get_entries($ldapconn, $sr);  
         $array = $info[0]["samaccountname"][0]; 
       }else{  
             $array=0; 
       }  
     ldap_close($ldapconn);  
     return $array; 
}  
?>

-----------------------------------------------------------------------------------------------------
control.php
<?php

   /*     require("ldap.php");
        header("Content-Type: text/html; charset=utf-8");
        $usr = $_POST["usuario"];
        $usuario = mailboxpowerloginrd($usr,$_POST["clave"]);
        if($usuario == "0" || $usuario == ''){
            $_SERVER = array();
            $_SESSION = array();
            echo"<script> alert('Usuario o clave incorrecta. Vuelva a digitarlos por favor.'); window.location.href='index.php'; </script>";
        }else{
            session_start();
            $_SESSION["user"] = $usuario;
            $_SESSION["autentica"] = "SIP";
            echo"<script>window.location.href='../index.php'; </script>";
        }

        */



		 require("ldap.php");
        header("Content-Type: text/html; charset=utf-8");
        $usr = $_POST["usuario"];
        $usuario = mailboxpowerloginrd($usr,$_POST["clave"]);
        if($usuario == "0" || $usuario == ''){
            $_SERVER = array();
            $_SESSION = array();
            echo"<script> alert('Usuario o clave incorrecta. Vuelva a digitarlos por favor.'); window.location.href='index.php'; </script>";
        }else{
            session_start();
            $_SESSION["user"] = $usuario;
            $_SESSION["autentica"] = "SIP";
            /*echo"<script>window.location.href='../index_1.php'; </script>";*/
			   /* if ($info["count"] > 0){
					for ($i=0; $i<$info["count"]; $i++){*/
						echo "<p>Nombre: ".$array[0]["samaccountname"][0]."<br />";
						
					/*}	
				}
				else{
					echo "<p>No se ha encontrado ningun resultado</p>";
				}*/
             if(isset($_SESSION['contador']))
  			{
   				 $_SESSION['contador'] = $_SESSION['contador'] + 1;
   				 $mensaje = 'Número de visitas: ' . $_SESSION['contador'];
  			}

		}

?>
-------------------------------------------------------------------------------------------------------
config.php
<?php
    define('DOMINIO', 'dominio.local');
    define('DN', 'dc=dominio,dc=local');
?>
--------------------------------------------------------------------------------------------------------
index.php
<link href="../cabecera/css/fondo.css" rel="stylesheet">

<?php @session_start();?>
    <html>
    <head>
 	</head>
    <title>Acceso por LDAP</title>
    <body>
    <form method="post" action="control.php"><br>
        <center>
          <table>

          	<tr>
            	<td colspan="2"><img src="/img/logo.png" WIDTH=500 class="logo" ALT></td>
            </tr>

             <tr>
                <td>
                	<center>
                	Usuario:
                	<br>
                	<input type="text" maxlength="50" name="usuario" id="usuario" />
                	<br>
                	Clave:
                	<br>
                	<input type="password" maxlength="50" name="clave" id="clave" />
                	<br>
                	<input type="submit" value="Entrar">
                	</center>
                </td>
            </tr>
          </table>
          <br>
        </center>
    </form>
    </body>
    </html>
<?php exit(); ?>
Este codigo valida el usuario que exista en el dominio.

El control.php esta un poco modificado debido a las pruebas que vengo haciendo.

Saludos

Etiquetas: ldap, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:02.