Estigmatizados

La informática profesional no es un juego de políticos

Every dog has his day -Alfresco y openLDAP también-

Según un compañero de fatigas de Rusia éste es un dicho popular allí. Tengo que preguntarle si es el equivalente a nuestro

A todo gochu le llega su San Martín

En mi caso a Alfresco parece que le está llegando ya que más o menos está autenticando con LDAP. Realmente está haciendo chaining entre la autenticación integrada de Ejemplo de mi árbol LDAPAlfresco y el LDAP.

Gracias a un ingeniero de Alfresco -gracias dward- y a muchas horas probando he llegado a las siguientes conclusiones:

Olvidaos de los ejemplos de chaining disponibles en:

C:\desarrollo\java\install\alfresco-3.2\tomcat\shared\classes\alfresco\extension\chaining-example.zip

Son para versiones anteriores y no funcionan en la Community 3.2. Tenemos que configurarlo de acuerdo a la versión 3.2 Instrucciones aquí aunque hay un problema: no funciona el mecanismo de redefinición de propiedades -configuring subsystems- por lo que las propiedades relativas a LDAP tenemos que agregarlas al archivo de configuración global.

C:\desarrollo\java\install\alfresco-3.2\tomcat\shared\classes\alfresco-global.properties

 Adjunto un ejemplo de cómo es mi archivo:

 
 
 
 
###############################
## Common Alfresco Properties #
###############################

#
# Sample custom content and index data location
#-------------
dir.root=C:/desarrollo/java/install/alfresco-3.2/alf_data

#
# Sample database connection properties
#-------------
db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=3306

#
# External locations
#-------------
ooo.exe=C:/desarrollo/java/install/alfresco-3.2/OpenOffice.org/program/soffice
img.root=C:/desarrollo/java/install/alfresco-3.2/ImageMagick
swf.exe=C:/desarrollo/java/install/alfresco-3.2/bin/pdf2swf

#
# MySQL connection
#-------------
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

#
# Index Recovery Mode
#-------------
#index.recovery.mode=Auto

#
# Outbound Email Configuration
#-------------
#mail.host=
#mail.port=25
#mail.username=anonymous
#mail.password=
#mail.encoding=UTF-8
#mail.from.default=alfresco@alfresco.org
#mail.smtp.auth=false

#
# Alfresco Email Service and Email Server
#-------------

# Enable/Disable the inbound email service.  The service could be used by processes other than
# the Email Server (e.g. direct RMI access) so this flag is independent of the Email Service.
#-------------
#email.inbound.enabled=true

# Email Server properties
#-------------
#email.server.enabled=true
#email.server.port=25
#email.server.domain=alfresco.com
#email.inbound.unknownUser=anonymous

# A comma separated list of email REGEX patterns of allowed senders.
# If there are any values in the list then all sender email addresses
# must match.  For example:
#   .*\@alfresco\.com, .*\@alfresco\.org
# Allow anyone:
#-------------
#email.server.allowed.senders=.*

#
# The default authentication chain
# To configure external authentication subsystems see:
# http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems
#-------------
#authentication.chain=alfrescoNtlm1:alfrescoNtlm
# FER_BEGIN
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
# FER_END

#
# IMAP
#-------------
#imap.server.enabled=true
#imap.server.port=143
#imap.server.host=localhost

#
# This properties file brings together the common options for LDAP authentication rather than editing the bean definitions
#

ldap.authentication.active=true
ldap.synchronization.active=true

# How to map the user id entered by the user to taht passed through to LDAP
# - simple
# - this must be a DN and would be something like
# CN=%s,DC=company,DC=com
# - digest
# - usually pass through what is entered
# %s
ldap.authentication.userNameFormat=uid=%s,ou=people,dc=uniovi,dc=es

# The LDAP context factory to use
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory

# The URL to connect to the LDAP server
ldap.authentication.java.naming.provider.url=ldap://gammu:389

# The authentication mechanism to use
#ldap.authentication.java.naming.security.authentication=DIGEST-MD5
ldap.authentication.java.naming.security.authentication=simple

# The default principal to use (only used for LDAP sync)
ldap.authentication.java.naming.security.principal=cn=admin,dc=uniovi,dc=es

# The password for the default principal (only used for LDAP sync)
ldap.authentication.java.naming.security.credentials=secret

# Escape commas entered by the user at bind time
# Useful when using simple authentication and the CN is part of the DN and contains commas
ldap.authentication.escapeCommasInBind=false

# Escape commas entered by the user when setting the authenticated user
# Useful when using simple authentication and the CN is part of the DN and contains commas, and the escaped \, is
# pulled in as part of an LDAP sync
# If this option is set to true it will break the default home folder provider as space names can not contain \
ldap.authentication.escapeCommasInUid=false

#
# This properties file is used to configure LDAP syncronisation
#

# The LDAP user to connect as to do the export operation.
ldap.synchronization.java.naming.security.principal=cn=admin,dc=uniovi,dc=es

# The password for this user, if required
ldap.synchronization.java.naming.security.credentials=secret

# The timestamp format
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'Z'

# The query to find the people to import
ldap.synchronisation.personQuery=(objectclass=inetOrgPerson)

# The search base of the query to find people to import
ldap.synchronisation.personSearchBase=ou=people,dc=uniovi,dc=es
ldap.synchronization.userSearchBase=ou=people,dc=uniovi,dc=es

# The attribute name on people objects found in LDAP to use as the uid in Alfresco
ldap.synchronisation.userIdAttributeName=uid

# The attribute on person objects in LDAP to map to the first name property in Alfresco
ldap.synchronisation.userFirstNameAttributeName=givenName

# The attribute on person objects in LDAP to map to the last name property in Alfresco
ldap.synchronisation.userLastNameAttributeName=sn

# The attribute on person objects in LDAP to map to the email property in Alfresco
ldap.synchronisation.userEmailAttributeName=mail

# The attribute on person objects in LDAP to map to the organizational id property in Alfresco
ldap.synchronisation.userOrganizationalIdAttributeName=o

# The default home folder provider to use for people created via LDAP import
ldap.synchronisation.defaultHomeFolderProvider=personalHomeFolderProvider

# The query to find group objects
ldap.synchronisation.groupQuery=(objectclass=groupOfUniqueNames)

# The search base to use to find group objects
ldap.synchronization.groupSearchBase=ou=groups,dc=uniovi,dc=es

# The attribute on LDAP group objects to map to the gid property in Alfrecso
ldap.synchronisation.groupIdAttributeName=cn

# The group type in LDAP
ldap.synchronisation.groupType=groupOfUniqueNames

# The person type in LDAP
ldap.synchronisation.personType=inetOrgPerson

# The attribute in LDAP on group objects that defines the DN for its members
ldap.synchronisation.groupMemberAttributeName=uniqueMember

# The cron expression defining when people imports should take place
ldap.synchronisation.import.person.cron=0 */10 * * * ?

# The cron expression defining when group imports should take place
ldap.synchronisation.import.group.cron=0 30 * * * ?

# Should all groups be cleared out at import time?
# - this is safe as groups are not used in Alfresco for other things (unlike person objects which you should never clear out during an import)
# - setting this to true means old group definitions will be tidied up.
ldap.synchronisation.import.group.clearAllChildren=true</pre>

Es importante indicar el encadenamiento de sistemas de autenticación:
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
Y también que hay que configurar la importación de grupos y usuarios

agosto 11, 2009 - Posted by | Uncategorized | , , , , ,

8 comentarios »

  1. Genial, me he rallado mucho con este tema y el artículo me ha solucionado la autenticación. Muchas Gracias!

    Comentario por victor piscue | noviembre 6, 2009 | Responder

  2. Gracias a ti. Lo bueno de los blog es que haya alguien que los lea y les de vida con sus comentarios.
    Un saludo !

    Comentario por Fer | noviembre 6, 2009 | Responder

  3. Uf, un poquito de información! Menos mal!

    He seguido un poco las instrucciones del post, para tratar de que Alfresco me autentique los usuarios contra el LDAP, para luego probar si al no existir crea directamente los usuarios por sincronización. El problema es que ni siquiera me intenta autenticar el usuario contra el ldap.

    He introducido las trazas
    log4j.logger.org.alfresco.repo.importer.ImporterJob=debug
    log4j.logger.org.alfresco.repo.importer.ExportSourceImporter=info
    log4j.logger.org.alfresco.repo.security.authentication.ldap=debug

    Pero no suelta nada cuando trato de hacer el login usando los datos de algún usuario del LDAP.
    ¿Se te ocurre alguna otra traza que me permita ver que está pasando y por qué no intenta autenticarse contra el LDAP?

    Gracias

    Comentario por blackpent | noviembre 9, 2009 | Responder

  4. Muy buenas,

    Igual es mucho pedir a estas alturas de la vida, pero llevo desde la version 3.0 intentando integrar alfresco con un AD de Windows 2003, tu articulo a asido uno de los pocos de ayuda, pero todavia me faltan algunas cosas, podrias hacer una gia mas detallada, o simplemente esplicar lo de la sincornizacion ?

    Un Saludo y Gracias, yo sigo con mi pelea

    Comentario por No-NaMe | diciembre 29, 2009 | Responder

  5. Hola

    Perdona que no te haya contestado, últimamente no puedo sacar tiempo para continuar con Alfresco. No he podido probarlo contra un AD, no obstante sería interesante que comentases exactamente que es lo que te pasa para que no funcione. ¿Da algún error? ¿Has probado a incrementar el nivel de log?
    Te lo digo porque quizá alguien que lea el blog pueda echar un cable. Dependiendo del error quizá sea también algo que me haya pasado a mí.

    Poco más te puedo decir salvo indicar algunas referencias que he utilizado y que ya había indicado en un comentario previo.

    http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems#Example_2:_Advanced_LDAP_Chain

    Alfresco Developer Guide de Jeff Pots. Ed. Packt Publishing
    Alfresco 3 Enterprise Content Management Implementation de Munwar Shariff. Ed. Packt Publishing

    Suerte y un saludo

    Comentario por Fer | enero 4, 2010 | Responder

  6. Hola, te felicito Fer es realmente dificil encontrar informacion sobre este tema, sobre todo para las nuevas versiones, me gustaria preguntarte si la configuracion que usaste te permite autenticarte a traves del protocolo CIFS?

    Con esta configuracion es posible hacer una sincronizacion con alguna solucion SSO como opensso o Jasig CAS?

    Gracias de antemano

    Comentario por Alex | febrero 24, 2010 | Responder

  7. No tienes idea de como me ayudo esto, estaba a punto de llorar tratando de enter ese wiki del alfresco

    Es tan frustrante cuando sabes que tienes que configurar pero no sabes donde o como, solo poner mis parametros y presto

    p.d. tienes un al final del codigo

    Espero poder molestarte algún dia con mas preguntas🙂

    Comentario por Pablo | abril 6, 2010 | Responder

  8. Mucho cuidado con los parámetros “ldap.synchronisation” deben ser “ldap.synchronization”.
    Copie y pegue y dos días de pruebas después me di cuenta, que a nadie le pase lo mismo.

    Comentario por Jose | junio 16, 2010 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: