Validar SIU-Diaguitas con ldap (SOLUCIONADO)

Alguien tiene el sistema SIU-Diaguitas validando los usuarios contra un servidor ldap?

Hola Marisa,

Creo que en este post del foro hay información sobre lo que estás consultando:

http://foro.comunidad.siu.edu.ar/index.php?topic=7207.0

Saludos.

Hola Marisa,

Diaguita en su mas reciente versión (2.1.x) implementa Toba 2.6, en el cual tienen soportado el acceso a diversos proveedores de identidad (Ldap entre otros).

Estaría bueno poder escuchar de alguna experiencia de parte del resto de las instituciones que implementan Diaguita :slight_smile:

Saludos!

Matias y Sergio:

Hola. Este link.

http://foro.comunidad.siu.edu.ar/index.php?topic=7207.0

menciona el archivo extension_usuarios.php el cual se debería modificar en la versión 2.1.1 no esta ubicado en aplicacio/php/librerias. Donde puede estar ubicado ahora o cual lo reemplaza?.

Yo logre configurar el ldap.ini y ponerlo en instalación. también modifique el archivo instalación ini para agregar autenticacion=ldap.
esto valida contra ldap pero luego me dice que el usuario y contraseña no existe. Seguro falta algo pero que???

Saludos.

Marisa

Eso fué antes de la reorganización sufrida por la implementación de la nueva versión de Toba que soporta personalización. Esa clase ahora se llama diaguita_usuario y esta ubicado en el archivo aplicacion/php/extension_toba/diaguita_usuario.php. De todas formas, no se recomienda modificar a mano esta clase ya que es mejor optar por el camino de configurar mediante ldap.ini :slight_smile:

Debería validarse directamente con Ldap y luego ingresar al sistema. ¿Que problemas puntualmente están surgiendo?

Estimados, tenemos instalada la versión 1.14.3 de SIU-Diaguita.
En el archivo “extension_usuario” tengo estos dos métodos configurados de la siguiente manera, y funcionando.
Además, desde el toba_editor, se debe dejar configurado en “Conf./Propiedades/Usuario” como en la imagen que adjunto.

	static function autenticar($id_usuario, $clave, $datos_iniciales=null, $usar_log=true)
	{
		$datos_usuario = toba::instancia()->get_info_autenticacion($id_usuario);
		if ( empty($datos_usuario) ) {
			$error = "El usuario '$id_usuario' no existe";
			if ($usar_log) {
				toba::logger()->error($error, 'toba');
			}
			throw new toba_error_usuario($error);
			return false;
		} else {
			
			//--- Autentificación vía LDAP.		
			if(!(self::autenticar_ldap($id_usuario, $clave, $datos_iniciales))) {
				$error = "El usuario '$id_usuario' ingreso una clave incorrecta";
				if ($usar_log) {
					toba::logger()->error($error, 'toba');
				}
				throw new toba_error_usuario($error);
				return false;
			}
			
			//Control de que el área del usuario tenga asociado una oficina de contratación o que el usuario exista.
			$temp_usuario = dao_consultas::get_datos_usuario(array('id_toba'=>$id_usuario,'count' =>true));
			if($temp_usuario[0]['count'] ==0)
			{
				$error = "El usuario '$id_usuario' no existe o se encuentra inhabilitado, por favor contactese con el administrador.";
				if ($usar_log) {
					toba::logger()->error($error, 'toba');
				}
				throw new toba_error_usuario($error);
				return false;
			}
			
		
			//Control de que el usuario tenga asociado alguna área.
			$temp_area = dao_consultas::get_usuarios_areas(array('id_toba'=>$id_usuario,'count' =>true));
			if($temp_area[0]['count'] ==0)
			{
				$error = "El usuario '$id_usuario' no tiene asociado un área, por favor contactese con el administrador";
				if ($usar_log) {
					toba::logger()->error($error, 'toba');
				}
				throw new toba_error_usuario($error);
				return false;
			}

		}
		return true;
	}
	
	static function autenticar_ldap($id_usuario, $clave, $datos_iniciales=null)
	{
		if (! extension_loaded('ldap')) {
			throw new toba_error("[Autenticación LDAP] no se encuentra habilitada la extensión LDAP");
		}

		//$ldap_server = ldap_connect(TU_SERVIDOR.edu.ar',xxx);// <------servidor,puerto
		$ldap_server = ldap_connect('xxx.xxx.xxx.xxx',xxx);// <------ IP,puerto
		ldap_set_option($ldap_server, LDAP_OPT_PROTOCOL_VERSION, 3);

		$usuario_cn = "uid=$id_usuario,ou=people, dc=TU_DOMINIO,dc=gov,dc=ar";
		$result = ldap_bind($ldap_server, $usuario_cn, $clave);

		if ($result == false) {
			toba::logger()->error("[Autenticación LDAP] Usuario/Contraseña incorrecta: ".ldap_error($conexion));
			return false;
		}

		ldap_close($ldap_server);
		toba::logger()->debug("[Autenticación LDAP] OK");

		return true;
	}


Espero a alguien le sea de utilidad, Saludos!


extension_usuario.jpg

extension_usuario.png

En la próxima versión de SIU-Diaguita (2.2.0) se da mejor soporte a la integración de LDAP, en particular, se puede definir el proveedor en el archivo ldap.ini tal y cual está explicado en la documentación de SIU-Toba.

Saludos!