2015/06/20 20:43 1/7 Detalles de implementación de Servicio de Directorio Detalles de implementación de Servicio de Directorio Características del Servidor ● ● ● Servidor: OpenLDAP version 2.4.11 Host, puerto: ldap.frba.utn.edu.ar:389 Protocolo LDAP soportado: LDAPv3 La interfaz de comunicación se establece utilizando diversas librerías: ● ● ● php-ldap para PHP jLDAP para JAVA Class DirectoryEntry en .NET Estructura del Directorio Bajo el dominio principal dc=frba,dc=utn,dc=edu,dc=ar se encuentran las siguientes Unidades Organizacionales: dc=personas,dc=frba,dc=utn,dc=edu,dc=ar Se encuentran todas las Personas registradas en el directorio de la Facultad. Incluye toda personal relacionada con la FRBA (docentes, no docente, alumno, etc) Caracteristicas ● ● Distinguished Name: uid=USUARIO,dc=personas,dc=frba,dc=utn,dc=edu,dc=ar ObjectClass Requeridos: inetOrgPerson posixAccount top shadowAccount FRBAPersona ❍ ❍ ❍ ❍ ❍ Wiki DiTIC - http://wiki.frba.utn.edu.ar/ditic/ Last update: 2013/11/18 21:13 public:ldap http://wiki.frba.utn.edu.ar/ditic/doku.php?id=public:ldap ou=groups,dc=frba,dc=utn,dc=edu,dc=ar Grupos creados para definición de roles en distintas aplicaciones. Cada uno contiene en el atributo memberUid los UserID de cada integrante. ou=ADMINS,dc=frba,dc=utn,dc=edu,dc=ar Contiene usuarios de sistema para las distintas aplicaciones, los cuales son utilizados por la misma para la lectura/modificacion de datos. ObjectClass y Attributes Para personalizar los datos de cada objeto dentro del árbol de directorio (sea grupo o persona), el sistema establece la definición de esquemas. Estos son altamente configurables y es factible la generación de nuevas estructuras para la integración con distintas aplicaciones. Object Classes FBRA Object Classes en Required Rama Personas Attributes FRBAPersona FRBAAlias FRBALibreta activoSINAP cn, destination, mail cn Optional Attributes OID Tipo ciudad, codigoPostal, cuil, direccion, estado, estadoCivil, fechaNacimiento, interno, legajo, legajoAlumno, legajoPersonaUTN, localidad, mailAlt, numeroDocumento, oficina, 1.1.2.2.1 auxiliary pais, paisNacimiento, partido, provincia, sede, sexo, telefonoMovil, telefonoPersonal, tipoDocumento, visibilidadLibreta, filiacion, mailType description, visibilidadLibreta, interno, 1.1.2.2.4 structural oficina interno, mailLibreta, photo 1.1.2.2.5 structural Attributes FRBA Attributes http://wiki.frba.utn.edu.ar/ditic/ Descripcion Single/Multi-Valued Example Valor posible Printed on 2015/06/20 20:43 2015/06/20 20:43 ciudad 3/7 Ciudad de residencia Single Codigo postal del codigoPostal domicilio de residencia cuil C.U.I.L. Domicilio de direccion residencia estado ?? estadoCivil Estado Civil fechaNacimiento Fecha de nacimiento interno Interno telefonico legajo (se da de baja) Legajo? legajoAlumno Legajo alumno legajoPersonaUTN Legajo UTN localidad ?? Mail alternativo o mailAlt destino de alias Numero de numeroDocumento documento Numero de oficina oficina principal de contacto pais Pais de residencia paisNacimiento Pais de nacimiento partido Partido de residencia Provincia de provincia residencia sede Sede de oficina sexo Genero telefonoMovil Telefono celular telefonoPersonal Telefono personal Tipo de documento tipoDocumento de identidad Visibilidad en libreta visibilidadLibreta de direcciones filiacion mailType activoSINAP destination mailLibreta Detalles de implementación de Servicio de Directorio Single Wiki DiTIC - http://wiki.frba.utn.edu.ar/ditic/ 1179 Single Single Single Single Single Single Single Single Single Single Medrano 951 Soltera 29/02/1990 7511 123456-7 65123-8 Single [email protected] Single 36123456 Single Of 123 Single Single Single Argentina Argentina Single Buenos Aires Single Single Single Single Medrano Femenino 15123456 456789 Single DNI Single 0 Tipo de actividad Multi-Valued dentro de la Facultad Tipo de cuenta de correo Estado del usuario Destino de alias de correo Mail de objectos de libreta de directorio Ciudad Autonoma de Buenos Aires docente Single externo:alias Single S MultiValued Single alumno nodocente becario investigador ayudante externo:alias frba:mailbox Last update: 2013/11/18 21:13 public:ldap http://wiki.frba.utn.edu.ar/ditic/doku.php?id=public:ldap Características de objetos Persona. uid: Nombre de usuario, identifica unívocamente al usuario. Admite caracteres alfanumericos, ”.” y “_” uidNumber: Identificador numérico de cada usuario. Distinguished Name (dn): Formado por el uid seguido de la posición dentro del árbol. userPassword: Las contraseñas se almacenan en MD5, codificadas en base64 más un identificador del hash utilizado. (RFC4519) Ejemplo en PHP: $pass = "{MD5}".base64_encode(pack("H*", md5(“clave”))); Generara el string: {MD5}+8cc42zCB5Dy7u0hl4mOcQ== mail: Campo que indica el mail FRBA. Debe contener un ÚNICO valor. mailAlt: Correo alternativo. Debe ser un correo externo a la facultad. interno: Numero de telefono interno del usuario. Visible a la herramienta “Buscador telefónico” o: Organización a la que el objeto pertenece. Ejemplos: “SGA”, “Direccion de Compras”, “DiTIC”, “DSI”, etc. Características de objetos Alias. cn: Nombre visible del Alias para libreta de direcciones. destination: Mails a los cuales se destinará el mail. mail: Mail fuente. VisibilidadLibreta: Visibilidad dentro de las libretas de direcciones. Interno: En caso de ser el alias de un Área de la FRBA se puede asignarle un interno, el cual figurara en libreta de direcciones y es posible hacer una búsqueda desde el Buscador Telefónico en estos objetos, también siendo factible tomar a través de los mails de “destination” las personas asociadas al área. Características de objectos Libreta Objeto utilizado para suplantar personas en la libreta de direcciones que tengan seteado el atributo http://wiki.frba.utn.edu.ar/ditic/ Printed on 2015/06/20 20:43 2015/06/20 20:43 5/7 Detalles de implementación de Servicio de Directorio visibilidadLibreta=0. Esto es para relacionar una persona (por ejemplo el Decano) con su secretaria y su mail del area y no personal. cn: Nombre de la persona. interno: Interno telefonico publico. mailLibreta: Mail publico de la persona. Consideraciones para la baja de usuario El atributo filiación establece la relación que posee la persona con la UTN.BA. En caso de que la persona no mantenga ningún vinculo, si se pretende eliminar la cuenta solo se podrá hacer, si y solo si, como resultado de la ejecución de la modificación en curso el atributo Filiación queda sin valores. Para realizar la baja se deberán modificar los siguientes parámetros en el directorio LDAP: ● ● ● ● ● activoSINAP: 'N' Los atributos filiaciación, interno, sede, oficina quedarán sin valores. Se borra el mail del usuario de los alias a los que pertenece como destinatario. En caso de ser único destinatario entonces colocar como destino del alias a la cuenta [email protected] y dar aviso “Alias sin destinatario” a [email protected] Se quita al usuario de todos los grupos ldap al que pertenece. Opcionalmente realizar un cambio de clave (que afecte al ds.frba.utn.edu.ar). Otras acciones fuera del servicio de directorio a realizar Fuera de la base de directorio, pero no deja de ser importante, son las siguientes acciones: ● ● ● Quitar los permisos de su cuenta SInAp. (Se recomienda la creación de un documento “Descripción de la aplicación SInAp) Quitar el usuario de Libreta complementaria del SInAp, si corresponde, se hace manualmente con el gestor de Libreta a desarrollar. (Se recomienda la creación de un documento “Descripción de Libreta complementaria SInAp”) Deshabilitar cuenta en el Active Directory de ds.frba.utn.edu.ar Consideraciones para el empadronamiento Wiki DiTIC - http://wiki.frba.utn.edu.ar/ditic/ Last update: 2013/11/18 21:13 public:ldap http://wiki.frba.utn.edu.ar/ditic/doku.php?id=public:ldap de alumnos Para el proceso de empadronamiento de alumnos se propone lo siguiente: 1. Cada alumno empadronado se agrega a la organización persona, como si se tratase de un docente con las observaciones que se detallan a continuación . 2. El atributo mailType debe valer externo:alias. Esto hará que el servidor de correo FRBA acepte la cuenta y la vincule con el contenido de mailAlt. 3. El atributo filiacion debe contener al menos el valor alumno 4. Se deberá validar el correo alternativo, por consiguiente se propone enviar la clave (generada aleatoriamente) al correo alternativo 5. Se propone crear una pagina para mantener datos variables entre los que deben estar al menos: mailAlt, telefonoMovil, telefonoPersonal, ciudad, codigoPostal, direccion Ejemplo de uso con PHP A continuación se detalla un ejemplo de conexión y busqueda con PHP. <?php function Login($user = null, $pass = null){ if( empty($user) || empty($pass) ) return false; $pass_encript = "{MD5}".base64_encode(pack("H*", $pass)); $ds = ldap_connect("ldap.frba.utn.edu.ar"); if ($ds){ ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3); $r = ldap_bind($ds, user, password) or die ("Error en la conexion"); if($r){ $result = ldap_search($ds, "dc=frba,dc=utn,dc=edu,dc=ar", "(&(uid=$user)(userPassword=$pass_encript))", array("uid", "uidNumber", "mail")) or die("Error del query: ".ldap_error()); $data = ldap_get_entries($ds, $result); if( $data["count"] == 0) return false; $uidNumber = $data[0]["uidnumber"][0]; } ldap_close($ds); } return $uidNumber; } ?> La función primero codifica el password con el algoritmo necesario para la comparacion, realiza una conexión al LDAP. http://wiki.frba.utn.edu.ar/ditic/ Printed on 2015/06/20 20:43 2015/06/20 20:43 7/7 Detalles de implementación de Servicio de Directorio En caso de éxito, setea la versión del protocolo a utilizar y se “logea” en el servidor con un user y password provisto exclusivamente para tal fin. Luego realiza una búsqueda desde el raiz del arbol filtrando por los atributos uid y userPassword que en caso de coincidencia devolvera: uid, uidNumber y mail. Para obtener las entradas se utiliza la función ldap_get_entries. Si la misma no devuelve “count” = 0, la función devolverá el uidNumber como código de salida exitosa. ACL Usuario Filtro cn=admin,dc=frba,dc=utn,dc=edu,dc=ar * cn=users,ou=admins,dc=frba,dc=utn,dc=edu,dc=ar cn=*,ou=admins,dc=frba,dc=utn,dc=edu,dc=ar * anonymous self * users users users self users * users users Permanent link: http://wiki.frba.utn.edu.ar/ditic/doku.php?id=public:ldap Wiki DiTIC - http://wiki.frba.utn.edu.ar/ditic/ * Nivel de acceso write * read userPassword, * auth shadowLastChange userPassword, * write shadowLastChange userPassword, * none shadowLastChange objectClass=organization * read objectClass=FRBALibreta * read direccion, gidNumber, homeDirectory, uidNumber, activoSINAP, ciudad, codigoPostal, cuil, estado, estadoCivil, fechaNacimiento, fechaNacimientoAux, objectClass=FRBAPersona givenName, none legajoAlumno, legajoPersonaUTN, loginShell, mailAlt, numeroDocumento, pais, paisNacimiento, partido, provincia, sexo, telefonoMovil, telefonoPersonal, tipoDocumento (&(objectClass=FRBAPersona)(visibilidadLibreta=1)(activoSINAP=S)) * write (&(objectClass=FRBAPersona)(visibilidadLibreta=1)(activoSINAP=S)) * read (&(objectClass=FRBAPersona)(visibilidadLibreta=1)(activoSINAP=S)) * none (&(objectClass=FRBAAlias)(visibilidadLibreta=1) destination none (&(objectClass=FRBAAlias)(visibilidadLibreta=1) * read From: http://wiki.frba.utn.edu.ar/ditic/ - Wiki DiTIC Last update: 2013/11/18 21:13 Atributo