Foros del Web » Programando para Internet » PHP »

Autenticación con LDAP

Estas en el tema de Autenticación con LDAP en el foro de PHP en Foros del Web. Muy buenas, estoy desarrollando una intranet en PHP en la cual los usuarios se autentican a través de LDAP. En la entrada de la intranet ...
  #1 (permalink)  
Antiguo 07/09/2009, 01:41
 
Fecha de Ingreso: enero-2007
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Autenticación con LDAP

Muy buenas, estoy desarrollando una intranet en PHP en la cual los usuarios se autentican a través de LDAP.

En la entrada de la intranet introduzco usuario y contraseña, se autentica correctamente contra LDAP y guardo la variable $conexion en $_SESSION["conexion"]. El problema surge cuando recargo la página ya que el $_SESSION["conexion"] se pierde.

¿es que hay que autenticarse contra LDAP en cada recarga de página?¿o tan solo es necesario la primera vez? Si es así, ¿como guardo la conexión establecida?

Gracias y un saludo.

PD: no se me ha olvidado poner session_start.
  #2 (permalink)  
Antiguo 07/09/2009, 01:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Autenticación con LDAP

Habria que ver lo que hiciste en el codigo para ver si es que esta tratando de guardar la información cada vez. Tambien verifica como tienes declarado session.cookie_lifetime en el php.ini. Pero verifica si haciendo esto te funciona:

crearSesion.php
Código PHP:
Ver original
  1. <?php
  2. $_SESSION["conexion"] = "CONECTADO";
  3. header("Location: verificarSesion.php");

verificarSesion.php
Código PHP:
Ver original
  1. <?php
  2. echo $_SESSION["conexion"];
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/09/2009, 02:19
 
Fecha de Ingreso: enero-2007
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Autenticación con LDAP

Código C&#243:
Ver original
  1. $conex=ldap_connect($host,$puerto) or die ("noConexion");
  2.     ldap_set_option($conex, LDAP_OPT_PROTOCOL_VERSION, 3);
  3.  
  4.     if ($conex) {
  5.          $r=@ldap_bind($conex, $_POST["usuario"], $_POST["password"]);
  6.          
  7.          if (!$r) die("no_existe");
  8.     }
  9.  
  10.     $_SESSION["conexion"]=$conex;
  11.     die("OK");

Este es el código para autenticarme en la intranet, aunque creo que de nada me sirve guardar la conexiòn ya que el kit de la cuestión esta en "ldap_bind".

En cada recarga de página y cada vez que quiera acceder a datos de LDAP tengo que lanzar el ldap_bind ¿no? Por lo tanto tendré que guardar el usuario y password en variables sesion y utilizarlos cada vez que quiera acceder a LDAP, ¿no?

¿esto no es peligroso?
  #4 (permalink)  
Antiguo 07/09/2009, 02:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Autenticación con LDAP

Te sugiero hacer el codigo en una pagina que accedera una sola vez. Ahí declaras las sesiones y luego solo tienes que llamarlas como el ejemplo que te coloque.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 07/09/2009, 03:57
 
Fecha de Ingreso: enero-2007
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Autenticación con LDAP

Creo que no me estás entendiendo, o no me entero yo bien.

Tengo un autenticar.php con el siguiente código, y por lo tanto como bien dices, llamo una única vez a autenticar.php donde genero la sesion.

Código autenticar.php:
Ver original
  1. session_start();
  2.     session_unset();
  3.  
  4.     // Validaciones
  5.     if(vacio($_POST["usuario"])){ echo "usuario"; die();}
  6.     if(vacio($_POST["password"])){ echo "password"; die();}
  7.  
  8.     $host       = "172.23.36.5";
  9.     $puerto     = 389;
  10.  
  11.     $conex=ldap_connect($host,$puerto) or die ("noConexion");
  12.     ldap_set_option($conex, LDAP_OPT_PROTOCOL_VERSION, 3);
  13.  
  14.     if ($conex) {
  15.          $r=@ldap_bind($conex, $_POST["usuario"], $_POST["password"]);
  16.          
  17.          if (!$r) die("no_existe");
  18.     }
  19.  
  20.     $_SESSION["conexion"]=$conex;
  21.     die("OK");

Una vez autenticado, entro en la intranet y voy a una de las secciones de la misma. Lanzo una consulta a LDAP:

Código consulta.php:
Ver original
  1. session_start();
  2.  
  3.     $dn = "ou=hosts,dc=empresa,dc=spain,dc=es";
  4.     $filtro="cn=*pro";
  5.  
  6.     $sr=ldap_search($_SESSION["conexion"], $dn, $filtro);
  7.     $info = ldap_get_entries($conex, $sr);

Esto no me funciona puesto que $_SESSION["conexion"] no me ha guardado correctamente la conexión. Entonces, ¿deberia llamar a autenticar cada vez que quiera acceder a datos de LDAP?

Gracias por tu paciencia...
  #6 (permalink)  
Antiguo 07/09/2009, 15:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Autenticación con LDAP

No te ha guardado la informacion porque estas declarando un session_start() e inmediatamente estas creando session_unset(). Por eso no se esta guardando la informacion. Quitale session_unset y vas a ver que si se guarda
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 10/09/2009, 05:01
 
Fecha de Ingreso: enero-2007
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
session_unset es para eliminar los datos de posibles anteriores sesiones. Esta instruccion $_SESSION["conexion"]=$conex; la realizo despues del session_unset así que no afecta en absoluto.

Aún así lo he probado y sigue sin guardar la conexión, no sé como pasarle la conexión establecida de una página a otra.

Definitivamente creo que guardaré el user y el pass en variables Session, y autenticaré en LDAP en cada recarga de página.

¿Es peligroso guardar esta información en variables session?

Última edición por GatorV; 10/09/2009 a las 14:03
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 07:37.