LSC es un conector Software Libre para sincronizar identidades entre un directorio LDAP y cualquier otra fuente de datos, incluyendo cualquier base de datos con un conector JDBC (Java Database Connectivity), otro servidor LDAP, etc..
Esto nos puede ser util para infinidad de cosas, como la de sincronizar un directorio Active Directory con OpenLDAP (en cualquier dirección). De esta manera, podríamos tener un escenario de autenticación híbrido en el cual programas que necesiten AD o OpenLDAP puedan habitar alimentándose de una sóla base de datos.
Así pues, vamos a proceder a instalar el programa obteniéndolo de la web oficial: http://lsc-project.org/
Tenemos dos maneras de hacerlo:
La más gráfica, mediante un paquete deb:
Lo descargamos |
Doble click en el archivo .deb |
Comprobamos que todo ha ido correctamente |
Localización de los archivos:
- /usr/bin/lsc: wrapper to launch LSC
- /etc/lsc/: configuration
- /var/log/lsc/: logs
- /etc/init.d/lsc: init script (for asynchronous connectors)
- /etc/default/lsc: init script configuration
- /etc/cron.d/lsc: cron configuration
- /usr/lib/lsc/: LSC libraries
- /var/lib/lsc/nagios/: monitoring scripts
- /usr/share/doc/lsc: sample scripts
Tambien podemos descargarnos tar.gz y descomprimirlo. Ya viene compilado y listo para usarse. En este caso, pese a que soy defensor de usar los paquetes deb y los repositorios (sobretodo los oficiales) en este caso creo que lo mejor es esta opción. Además, los ejemplos vienen pensados justamente para hacerlo de esta manera (rutas, etc).
Así que.. queda probarlo:
./lsc-sample
One option from available options is:
--import [] Import data from CSV file
--show Show data from database
--drop Drop the table csvdata from database
--start-ldap-server Launch an embedded OpenDJ LDAP server
--stop-ldap-server Halt an embedded OpenDJ LDAP server
--run Run the synchronization task
--clean Remove all files from disk
--help Print informations
Vamos a probar una sincronización a modo de ejemplo con las herramientas incrustadas que lleva el propio programa.
Miraremos de cargar los registros que queremos sincronizar en la base de datos:
bin/lsc-sample --import sample.csv
Podemos comprobar el contenido mediante la siguiente linea:
bin/lsc-sample --show
Arrancaremos el servidor LDAP incorporado de pruebas:
#lsc-2.1.3/sample/hsqldb$ bin/lsc-sample --start-ldap-server
Starting LDAP server on ldap://localhost:33389/ ... segons /home/ediaz/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc
nov 02 15:36:05 - INFO - Logging configuration successfully loaded from /home/eithel/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc/logback.xml
nov 02 15:36:05 - INFO - LSC configuration successfully loaded from /home/eithel/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc/
Como el ejemplo lo hace sobre 127.0.0.1 y puede ser que no dispongamos de una herramienta gráfica, podemos mirar de probarlo mediante ldapsearch:
ldapsearch -D "cn=Directory Manager" -w secret -p 33389 -h localhost -b "dc=lsc-project,dc=org" -s sub "(objectclass=*)"
# extended LDIF
#
# LDAPv3
# base
# filter: (objectclass=*)
# requesting: ALL
#
# lsc-project.org
dn: dc=lsc-project,dc=org
dc: lsc-project
objectClass: domain
objectClass: top
# Sample, lsc-project.org
dn: ou=Sample,dc=lsc-project,dc=org
description: Sample subtree
ou: Sample
objectClass: organizationalUnit
objectClass: top
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Con la base de datos cargada y un servidor LDAP en donde migrar esos datos, nos dispondremos a hacer la migración:
#bin/lsc-sample --run
y vemos el resultado de nuevo con la busqueda ldapsearch:
- URL: ldap://localhost:33389/
- Base DN: dc=lsc-project,dc=org
- Bind DN: cn=Directory Manager
- Password: secret
# extended LDIF
#
# LDAPv3
# base
# filter: (objectclass=*)
# requesting: ALL
#
# lsc-project.org
dn: dc=lsc-project,dc=org
dc: lsc-project
objectClass: domain
objectClass: top
# Sample, lsc-project.org
dn: ou=Sample,dc=lsc-project,dc=org
description: Sample subtree
ou: Sample
objectClass: organizationalUnit
objectClass: top
# clem.oudot@gmail.com, Sample, lsc-project.org
dn: mail=clem.oudot@gmail.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Z3Y5ZGlzaFhaZlNQeGR6ekZ0SU1xMlN1WHp5NU5NTDVSdGJlNXc9PQ=
=
mail: clem.oudot@gmail.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: c.oudot
cn: Oudot, Clement
sn: Oudot
# jonathan@philipoux.net, Sample, lsc-project.org
dn: mail=jonathan@philipoux.net,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9QUlOd0RoWDROTG5aSE9TUDVpKzRtZUJSTzRkMmF2eFNTaDUwWVE9PQ=
=
mail: jonathan@philipoux.net
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
carLicense: BHU772
carLicense: DED899
uid: j.clarke
cn: Clarke, Jonathan
sn: Clarke
# thomas@aepik.net, Sample, lsc-project.org
dn: mail=thomas@aepik.net,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Ynh0Y2FWb1g1cmpRcHZSU29PSEd5ME94VGtGSWZGRnlOK3h1SHc9PQ=
=
mail: thomas@aepik.net
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: t.chemineau
cn: Chemineau, Thomas
sn: Chemineau
# sebastien.bahloul@gmail.com, Sample, lsc-project.org
dn: mail=sebastien.bahloul@gmail.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9dzRUbDhPOEU5dW9mc2tFZDBqR0JYNW1yTzVPMWZmakFJOUdMdkE9PQ=
=
mail: sebastien.bahloul@gmail.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: s.bahloul
cn: Bahloul, Sebastien
sn: Bahloul
# remy@schermesser.com, Sample, lsc-project.org
dn: mail=remy@schermesser.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9eE9odElwcENEN3RLRlZONSt4Ris1WkNpRlp5Wmx4NlBYV3M5bUE9PQ=
=
mail: remy@schermesser.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: r.schermesser
cn: Schermesser, Remy-Christophe
sn: Schermesser
# epereira@linagora.com, Sample, lsc-project.org
dn: mail=epereira@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9YzUwaFEra2RPLzRLQjI4WG9tMmREQm83KzFFOWo4Wi9GbktaZkE9PQ=
=
mail: epereira@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: e.pereira
cn: Pereira, Esteban
sn: Pereira
# dcoutadeur@linagora.com, Sample, lsc-project.org
dn: mail=dcoutadeur@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Z2VKUkpFa012dE9wNGZvWDB1anVxeEVHMXZZaE1Ob3cvUmp6T0E9PQ=
=
mail: dcoutadeur@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: d.coutadeur
cn: Coutadeur, David
sn: Coutadeur
# rouazana@linagora.com, Sample, lsc-project.org
dn: mail=rouazana@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9YjJKUWQ3NUtTaDlCWnJnUTIrd2E1NWNzNVdNSFIreFpXeG5lbkE9PQ=
=
mail: rouazana@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: r.ouazana
cn: Ouazana, Raphael
sn: Ouazana
# search result
search: 2
result: 0 Success
# numResponses: 11
# numEntries: 10
En resumen, lo que hemos hecho es, dado un csv, cargar una base de datos intermedia. Luego, con los datos cargados en esa base de datos, los migramos a otro servidor LDAP (OpenLDAP, AD, etc).
No hay comentarios:
Publicar un comentario