amap-ldap

Última modificación por Administrator el 2019/07/01 14:33

AMAPLdap-1.3.0 2019/07/01

Nuevo método para obtener los grupos globales a los que pertenece un empleado mediante su código: getGruposGlobalesEmpleado

AMAPLdap-1.2.0 2019/04/09

Nuevo método de obtener empleados mediante el dni: getEmpleadoByDni

AMAPLdap-1.1.2 2019/04/01

Nuevo método de obtener usuarios activos de un grupo: getEmpleadosActivosGrupo

AMAPLdap-1.1.1 2018/12/11

Se eliminan trazas debug del componenete.

AMAPLdap-1.1.0 2017/03/21

Nuevos métodos para obtener un campo específico de un empleado, establecer un campo específico del empleado, comprobar contraseña.

Para las 3 últimas operaciones se requiere de un usuario de lectura/escritura.

Se retiran los métodos de factoría para crear servicios deprecados.

AMAPLdap-1.0.12 2017/03/21

Correcciones menores.

AMAPLdap-1.0.11 2016/07/10

Correcciones menores.

AMAPLdap-1.0.10 2015/07/10

Correcciones menores.

AMAPLdap-1.0.9 2015/03/16

Correcciones menores.

AMAPLdap-1.0.8 2015/02/28

Correcciones menores.

AMAPLdap-1.0.7 2015/02/16

Añadido nuevo parámetro obligatorio al contructor del servicio Aplicaciones Autorizadas.
Se obtendrá del fichero de propiedades de cada aplicación, de la clave: ${sistemas.app.amap.ldap.aplicaciones}.

AMAPLdap-1.0.6 2015/02/11

Soporte de consulta de usuarios inexistentes sin lanzamiento de una excepción.

AMAPLdap-1.0.5 2015/02/09

Añadida funcionalidad que permite obtener las aplicaciones registradas en el servidor Ldap.
Renombrado el método AMAPLdapServiceFactory.getServico(...) a AMAPLdapServiceFactory.getServicio(...), debido a un error de sintaxis.
El método anterior se mantiene marcado como obsoleto por compatibilidad.

AMAPLdap-1.0.4 2015/01/26

Añadida funcionalidad que permite obtener empleados a través de su código parcial, o datos personales.

AMAPLdap-1.0.3 2014/10/23

Eliminada la parte de servidor.

AMAPLdap-1.0.2 2014/09/23

Añadida funcionalidad que permite recuperar los Empleados que pertenecen a un Grupo u a una Aplicación.

AMAPLdap-1.0.1 2014/07/29

Segunda versión del componente.
Añadida funcionalidad que permite recuperar los grupos a los que pertenece un Empleado.

AMAPLdap-1.0.0 2014/07/17

Primera versión del componente.

<dependency>
<groupId>es.gobcantabria.amap.utilidades</groupId>
<artifactId>amap-ldap</artifactId>
<version>1.3.0</version>
</dependency>

Es necesario de disponer de los siguientes datos:

  • Servidor: nombre o ip del servidor donde se aloja el servidor LDAP.
  • Usuario del servicio LDAP.
  • Contraseña del servicio LDAP .
  • Base de conexión del servicio LDAP .

Sin recursos disponibles.

Configuración

Para la utilización del componente amap-ldap basta con añadir el jar y sus correspondientes dependencias al classpath de la aplicación y crear un servicio del siguiente modo:

  • Implementacion: Se empleará alguno de los siguientes valores, LdapClienteTipoImplementacion.LDAP_CLIENTE_LDAP o LdapClienteTipoImplementacion.LDAP_CLIENTE_MOCK, en función de la implementación que se quiera.
  • Servidor (host): nombre o ip del servidor donde se aloja el servidor LDAP.
  • Base de búsqueda del servidor LDAP: generalmente cadena vacía, indica la base de búsqueda dentro del árbol ldap.
  • Usuario del servicio LDAP.
  • Contraseña del servicio LDAP .
  • Aplicaciones Autorizadas, proporcionado en el fichero de propiedades de cada aplicación.

AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.global.ldap.baseusers}"
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");


o bien (configuración recomendada)


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   LdapClienteTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

Que tomará el valor de "BASE_LDAP" como la cadena vacía.

El servicio concreto a usar se definirá a partir de un fichero de properties junto con el resto de los parámetros:

KeyDescripciónEjemplo
sistemas.global.ldap.hostIP del servidor de LDAP.*
sistemas.app.amap.ldap.usuarioUsuario necesario para autenticarse en el ldap*
sistemas.app.amap.ldap.passwordPassword necesaria para autenticarse en el ldap*
sistemas.app.amap.ldap.aplicacionesAplicaciones para autentificarse en e ldap*

Los valores de las propieades aquí mostrados son meramente ilustrativos. En los entornos de desarrollo / preproducción y producción los valores de las variables han de ser externalizados tal y como se especifica en el documento Definición de acceso a propiedades de sistema

Ejemplo de contenido del fichero de propiedades:

sistemas.global.ldap.host=*****
sistemas.app.ldap.baseroles=cn=<nombre_aplicacion>,cn=aplicaciones,dc=gobcantabria,dc=es
sistemas.app.amap.ldap.usuario=xxxxxx
sistemas.app.amap.ldap.password=xxxxxxx
sistemas.app.amap.ldap.aplicaciones=xxxxxx,xxxxxx

Empleado

Representa a un Empleado registrado en LDAP.

Grupo

Representa a un Grupo registrado en LDAP.

Nombreamap-ldap
Identificadoramap-ldap
Grupoes.gobcantabria.amap.utilidades
Versión1.3.0
Licencia
DesarrolladorDGDIT
Descripción

Componente de consulta de datos del directorio LDAP.

Documentaciónamap-ldap (JavaDoc)
Binarioamap-ldap (Jar)
Dependenciasamap-ldap (Librerías)

Sin particularidades. Seguir las recomendaciones del fabricante.

Ejemplos de uso

Una vez creado el servicio, tal y como se indica en el apartado de configuración, se pueden acceder a los métodos disponibles.

Datos del empleado

Permite obtener los datos del Empleado con código "xyz1234":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

 String codigoEmpleado = "xyz1234";
 Empleado empleado  = ldapCliente.getEmpleado(codigoEmpleado);

Datos del empleado por DNI

Permite obtener los datos del Empleado con dni "20000009R":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

 String dniEmpleado = "20000009R";
 Empleado empleado  = ldapCliente.getEmpleadoByDni(dniEmpleado);

Roles del empleado

Permite obtener los Roles a los que pertenece el Empleado con código "xyz1234":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");


 String codigoEmpleado = "xyz1234";
 List<Grupo> grupos = ldapCliente.getGruposEmpleado(codigoEmpleado);

Grupos globales del empleado

Permite obtener los grupos globales a los que pertenece el Empleado con código "xyz1234".
Descripción de los atibutos de la clase GrupoGlobal:
- nombre  -> Nombre de la hoja de LDA. Por ejemplo: altoscargos
- nombreCompleto -> Indica la ruta completa de los nodos padres del grupo al que pertenece el usuario.
      Por ejemplo: gobierno.altoscargos
- nombrePrincipal -> Nombre del grupo en LDAP. Por ejemplo: AltosCargos
 


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");


 String codigoEmpleado = "xyz1234";
 List<GrupoGlobal> gruposGlobales = ldapCliente.getGruposGlobalesEmpleado(codigoEmpleado);

Tipos de empleado

Permite obtener los tipos de usuario gubernamental que pertenece el Empleado con código "xyz1234". Los tipos más habituales son "Funcionarios", "AltosCargos" y "Laborales":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");


 String codigoEmpleado = "xyz1234";
 List<TipoEmpleadoGobierno> tiposEmpleadoGobierno = ldapCliente.getTipoEmpleado(codigoEmpleado);

Usuarios de un grupo

Permite obtener los Empleados que pertenecen al grupo con código "REC.administrador":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

String codigoGrupo = "REC.administrador";
List<Empleado> empleados = ldapCliente.getEmpleadosGrupo(codigoGrupo);

Usuarios Activos de un grupo

Devuelve solo los usuarios activos

Permite obtener los Empleados activos que pertenecen al grupo con código "REC.administrador":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

String codigoGrupo = "REC.administrador";
List<Empleado> empleados = ldapCliente.getEmpleadosActivosGrupo(codigoGrupo);

Roles de una aplicación

Permite obtener los Roles que pertenecen a la Aplicación con código "Aplicacion":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

String codigoAplicacion = "REC";
List<Grupo> grupos= ldapCliente.getGruposAplicacion(codigoAplicacion);

Empleados por código

Permite obtener los Empleados cuyo código comience por "sam":


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

String codigoEmpleadoParcial = "sam"
List<Empleado> empleados = ldapCliente.getEmpleados(codigoEmpleadoParcial, null, null, null);

Empleados por datos personales

Permite obtener los Empleados que coincidan con criterios basados en sus datos personales:


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");


// Todos los empleados cuyo nombre sea FELIPE.
String nombreEmpleado= "FELIPE"
List<Empleado> empleados = ldapCliente.getEmpleados(null, nombreEmpleado, null, null);

// Todos los empleados cuyo nombre sea FELIPE, y primer apellido GARCIA
String primerApellidoEmpleado = "GARCIA"
empleados = ldapCliente.getEmpleados(null, nombreEmpleado, primerApellidoEmpleado, null);


// Todos los empleados cuyo nombre sea FELIPE, y primer apellido GARCIA, y segundo apellido PEREZ.
String segundoApellidoEmpleado = "PEREZ"
empleados = ldapCliente.getEmpleados(null, nombreEmpleado, primerApellidoEmpleado,
    segundoApellidoEmpleado);

Aplicaciones

Permite obtener las Aplicaciones actualmente existentes en el servidor Ldap:


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

List<Aplicacion> aplicaciones = ldapCliente .getServicio().getAplicaciones();

Obtener propiedad empleado

Permite obtener una propiedad específica del empleado del LDAP.


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

String postalCode = ldapCliente .getServicio().getEmpleadoPropiedad("usuario", "postalCode");

Establecer propiedad empleado

Permite establecer el valor una propiedad específica del empleado del LDAP.

    • es necesario tener un usuario con permisos de escritura para realizar esta operación 

AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

ldapCliente .getServicio().setEmpleadoPropiedad("usuario", "postalCode", "39710");

Comprobar la contraseña de un usuario

Permite establecer el valor una propiedad específica del empleado del LDAP.


AMAPLdapServiceInterface ldapCliente = AMAPLdapServiceFactory.getServicio(
   AMAPLdapTipoImplementacion.LDAP_CLIENTE_LDAP,
   "${sistemas.global.ldap.host}:${sistemas.global.ldap.port}",
   "${sistemas.app.amap.ldap.usuario}",
   "${sistemas.app.amap.ldap.password}",
   "${sistemas.app.amap.ldap.aplicaciones}");

boolean passwordOk = ldapCliente .getServicio()..checkPassword("usuario1", "password1"));

© 2014 GOBIERNO DE CANTABRIA - AVISO LEGAL Y PROTECCIÓN DE DATOS