Estoy jugando un poco con G3W probando las diferentes maneras de login y recupero de contraseña.
El login y recupero de contraseña contra informix está funcionando…
¿Hay algo hecho con respecto a loguearse en G3W contra un AD usando LDAP? En mi config.php no veo ninguna flag que permita activar/desactivar este tipo de autenticación… pero veo que hay 2 módulos dedicados a LDAP a modo de personalizaciones comunes:
protected function validar_user_pass($usuario, $password)
{
// leemos los parámetros de configuración
$this->config_ldap = kernel::proyecto()->get_parametros_ldap();
$ldaphost = $this->config_ldap['server'];
$seguro = $this->config_ldap['ssl'];
$ldapport = $this->config_ldap['port'];
$ldaprdn = $this->config_ldap['user'];
$ldappass = $this->config_ldap['pwd'];
if ($seguro) {
$ldaphost = "ldaps://$ldaphost/";
}
// Conexión al servidor LDAP
$ldapconn = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost");
if ($ldapconn) {
// realizando la autenticación
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// acá linkear el usuario de dominio con el perfil del usuario en g3w
// $id_persona = $this->get_clase_usuarios()->autenticar_ldap($parametros_conexion, $usuario, $password);
// verificación del enlace
if (!$ldapbind) {
//contar intentos fallidos
intentos_login::eliminar($usuario);
die("LDAP bind failed...");
}
}
return $id_persona;
}
NOTA: eso ya se que está roto e incompleto… pero por hoy no haré más nada y quería compartirlo aunque esté inconcluso
Cosas que faltan:
Si no es un usuario válido en el dominio, intentar usar la autenticación tradicional de G3W.
Reemplazar los DIE por mensajes de error estandars de 3w
Que el código en general funcione
Adaptar el circuito de recuperación de la clave… y si el usuario es un usuario de dominio en vez de dar oportunidad de recuperar la pwd informar que debe presentarse en determinado lugar para cambiarla, otro mensaje parecido, o agregar la opción de cambio de claves de dominio simil este ejemplo: https://gist.github.com/mattrude/657334#file-changepassword-php
Esta funcionando todo… si debugueo paso por paso todo funciona como debe funcionar.
pero el 50% de las veces (que no debugueo) después del intento de loguin se queda la pantalla en blanco (como si no se terminara de cargar o si la cache no terminase de vaciarse). Click en refresh, confirmo el reenvio de los datos y funciona OK otra vez el 50% de las veces o se puede repetir.
Les adjunto los archivos involucrados en el loguin… pero ya les advierto que sin un server de dominio al que conectarse no podrán probar nada.
Los parámetros de configuración los toma desde instalacion\login.php: