Forums

Home » Liferay Portal » Español » General »

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Mario Muñoz
Problema integración Liferay+Active Directory
September 15, 2008 4:36 AM
Answer

Mario Muñoz

Rank: Junior Member

Posts: 43

Join Date: August 27, 2007

Recent Posts

Hola,

De nuevo nos surge un nuevo problema en nuestro proyecto de portal. Queremos que la autenticación se realice contra un servidor LDAP, que en nuestro caso en un Active Directory de Microsoft.

Para ello, y utilizando el portlet "Enterprise Admin", configuramos los parámetros de conexión. Al pulsar sobre los botones "Test LDAP Connection", "Test LDAP users" y "Test LDAP groups", obtenemos que la conexión se realiza de forma correcta y podemos ver los usuarios y grupos que hay registrados en el LDAP. Además, habilitamos la importación de usuarios a la base de datos de Liferay (siguiendo un tutorial de los foros en inglés, sólo dejamos marcada la casilla "Import enabled").

Viendo la base de datos, vemos que los usuarios se importan correctamente desde el LDAP, pero el problema surge a la hora de hacer login: no podemos acceder con ninguno de los usuarios registrados, aparecen los errores "You have entered invalid data. Please try again. " y "Authentication failed. Please try again. ".

Hemos probado con la opción "Use LDAP password policy" tanto marcada como desmarcada, con idéntico resultado.

¿Alguien tiene experiencia con esta configuración?

Gracias y un saludo.

Mario.
Mario Muñoz
RE: Problema integración Liferay+Active Directory
September 15, 2008 6:16 AM
Answer

Mario Muñoz

Rank: Junior Member

Posts: 43

Join Date: August 27, 2007

Recent Posts

Hola de nuevo,

Ofrezco una "solución a medias", porque funciona, pero no sé muy bien si es la forma correcta de hacerlo. Al configurar la conexión con LDAP, marcar la casilla "Enabled" pero no marcar la casilla "Required". En todas las pruebas anteriores habíamos marcado las dos casillas, pero al hacerlo con sólo una, hemos conseguido hacer el login correctamente.

Aprovecho para preguntar por los detalles técnicos de la diferencia entre marcar o no esta casilla.

Saludos!

Mario.
Mario Muñoz
RE: Problema integración Liferay+Active Directory
September 15, 2008 7:14 AM
Answer

Mario Muñoz

Rank: Junior Member

Posts: 43

Join Date: August 27, 2007

Recent Posts

Hola otra vez,

Seguimos teniendo algunos problemas con el login tras importar los usuarios del LDAP. Aunque hace un momento había escrito que habíamos logrado hacerlo funcionar "a medias", sólo conseguimos entrar con el usuario administrador que viene definido por defecto en Liferay. Si intentamos entrar con alguno de los usuarios del LDAP, obtenemos los mismos errores que antes.

La parte curiosa de este error es que si, accedemos con el administrador a un usuario, y le cambiamos el password, podemos acceder sin problemas con este nuevo password. Viendo esto, sospecho que el problema puede ser que el password no se importa correctamente desde el LDAP. Ahora me surgen un par de preguntas:

  • ¿Existe alguna manera de decodificar el password que se almacena en la base de datos? Supongo que, por seguridad, no existirá esta posibilidad.
  • Si la respuesta a la anterior pregunta es que no, ¿se le puede indicar de alguna forma al portal que guarde los passwords de los usuarios desencriptados? Me gustaría poder ver el valor que se está importando para comprobar si lo estoy haciendo de la forma correcta.


Si alguien con experiencia en el uso de Active Directory puede aconsejarme, se lo agradezco. Si no, me conformo con la respuesta a las preguntas emoticon.

Gracias!

Mario.
oscar caro puerto
RE: Problema integración Liferay+Active Directory
September 15, 2008 11:44 PM
Answer

oscar caro puerto

Rank: New Member

Posts: 20

Join Date: May 15, 2007

Recent Posts

Hola,
Yo tuve el mismo problema que describes, no me importaba bien el campo userPassword del LDAP y además de esto, como los usuarios en Active Directory contenían espacios, me daba un error de validacion de ScreenName en LR.

Con respecto al password, creo que el problema es que Active Directory no deja leer el campo password:
Encontré esta referencia, donde indica que el atributo es de solo escritura, y otras que ahora no tengo pero que afirmaban lo mismo, que no se puede obtener por razones de seguridad:

http://msdn.microsoft.com/en-us/library/cc199198.aspx

En mi caso he desistido porque tenía una alternativa, que es enlazar liferay con el directorio Lotus Domino que tenemos para el correo y va perfectamente.

Saludos,
Oscar Caro
Mario Muñoz
RE: Problema integración Liferay+Active Directory
September 16, 2008 12:23 AM
Answer

Mario Muñoz

Rank: Junior Member

Posts: 43

Join Date: August 27, 2007

Recent Posts

Hola Óscar, gracias por responder.

Al final parece que hemos logrado hacerlo funcionar correctamente. El problema, como no, era una tontería de las que no te das cuenta hasta que estás harto de probar cosas más complicadas.

Simplemente, habíamos cambiado la configuración de la autenticación para que se hiciera a partir del campo screenName en lugar de la dirección de correo electrónico. Sin embargo, al hacer esto, no habíamos cambiado el valor por defecto que se le asigna, para Active Directory, al campo Authentication Search Filter. Después de cambiar de "(&(objectCategory=person)(sAMAccountName=@email_address@))" a "(&(objectCategory=person)(sAMAccountName=@screen_name@))", parece que funciona correctamente. Es una modificación evidente, pero hemos tardado en darnos cuenta emoticon.

Adjunto una pantalla con nuestros parámetros de configuración por si le puede servir de ayuda a alguien.

Imagen 1

Imagen 2

Saludos!

Mario.
oscar caro puerto
RE: Problema integración Liferay+Active Directory
October 15, 2008 1:37 AM
Answer

oscar caro puerto

Rank: New Member

Posts: 20

Join Date: May 15, 2007

Recent Posts

Gracias por las capturas de pantalla! Me han sido muy útiles.

He retomado el tema de Active Directory y he conseguido que funcione parcialmente, con algún problema que describo a continuación:

Cuando activo la importación automática, Liferay asigna a los usuarios un password aleatorio, que después pueden cambiar. Si no programo la importación, cuando un usuario nuevo se identifica con las credenciales del Active Directory automáticamente se crea el usuario en la base de datos de liferay con el password correcto. Esta segunda opción me va bien.

El problema que aún no he conseguido resolver, es que hay ciertos usuarios en nuestro AD que contienen espacios en su sAMAccountName, y al importar a liferay da una excepción "invalid screen name".

He probado a establecer la propiedad users.screen.name.always.autogenerate=true y en ese caso funciona la primera importación, ya que genera un screen name que es la primera parte del mail (hasta la @), pero cuando el usuario se loga por segunda vez, trata de sincronizar el screenname con el ldap, ignorando esta propiedad, y salta una excepción.

Crearé un post nuevo en inglés con este segundo problema

Saludos
Gonzalo Juan Tapia
RE: Problema integración Liferay+Active Directory
October 15, 2008 10:56 AM
Answer

Gonzalo Juan Tapia

Rank: New Member

Posts: 2

Join Date: October 13, 2008

Recent Posts

Hola Mario,
Tu respuesta me sirvió mucho ya que estaba intentando hacer lo mismo pero al replicarla me aparece el siguiente error en los logs. Quería saber si tu también tuviste algún problema relacionado con esto.

Características de la instalación:
- Liferay Portal 5.1.1 con tomcat sobre Solaris 10
- Base de datos Oracle 10g
- MS Active Directory

Detalle del error:
14:59:50,582 ERROR [MainServlet:665] com.liferay.portal.ModelListenerException: javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 00002035: LdapErr: DSID-0C090A36, comment: Operation not allowed through GC port, data 0, vece]; remaining name 'CN=Tapia Montes\, Gonzalo (Laninfo),OU=Expiran,OU=TemporalOU,DC=cl,dc=lan,dc=com'
com.liferay.portal.ModelListenerException: javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 00002035: LdapErr: DSID-0C090A36, comment: Operation not allowed through GC port, data 0, vece]; remaining name 'CN=Tapia Montes\, Gonzalo (Laninfo),OU=Expiran,OU=TemporalOU,DC=cl,dc=lan,dc=com'
at com.liferay.portal.model.UserListener.onAfterUpdate(UserListener.java:90)
at com.liferay.portal.service.persistence.UserPersistenceImpl.update(UserPersistenceImpl.java:252)
at com.liferay.portal.service.impl.UserLocalServiceImpl.updateLastLogin(UserLocalServiceImpl.java:1484)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy144.updateLastLogin(Unknown Source)
at com.liferay.portal.service.UserLocalServiceUtil.updateLastLogin(UserLocalServiceUtil.java:633)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:282)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.doFilter(VirtualHostFilter.java:145)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 00002035: LdapErr: DSID-0C090A36, comment: Operation not allowed through GC port, data 0, vece]; remaining name 'CN=Tapia Montes\, Gonzalo (Laninfo),OU=Expiran,OU=TemporalOU,DC=cl,dc=lan,dc=com'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3058)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2931)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2737)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1437)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:172)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:161)
at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:148)
at com.liferay.portal.security.ldap.PortalLDAPUtil.exportToLDAP(PortalLDAPUtil.java:215)
at com.liferay.portal.model.UserListener.onAfterUpdate(UserListener.java:83)
... 47 more

Se agradece si tienes algún antecedente de este error.
Gracias y saludos a todos
Gonzalo
Gonzalo Juan Tapia
RE: Problema integración Liferay+Active Directory
October 15, 2008 12:08 PM
Answer

Gonzalo Juan Tapia

Rank: New Member

Posts: 2

Join Date: October 13, 2008

Recent Posts

Estimados,
Acabo de resolver el problema y era que me faltaba mapear el campo fullName. No me habia fijado en ese detalle ya que la configuración la hice en el archivo portal-ext.properties.

La linea dentro del archivo corresponde a:

ldap.user.mappings=screenName=sAMAccountName\npassword=userPassword\nemailAddress=userprincipalname
\nfullName=cn\nfirstName=givenName\nlastName=sn\njobTitle=title\ngroup=memberOf


Saludos,
Gonzalo
Antonieta A. Olivares
RE: Problema integración Liferay+Active Directory
January 25, 2010 12:35 PM
Answer

Antonieta A. Olivares

Rank: Regular Member

Posts: 148

Join Date: November 4, 2009

Recent Posts

hola mario, he leido todos tus post, y me pasó un problema parecido al tuyo..
pruebo la conexion ldap y me dice ok, pruebo la configuracion de usuario y me muestra algunos...
pero hize lo mismo que tu .. para poder ingresar a liferay con mi cuenta ldap
cambie en las dos partes la opcion de ingresar con screen_name pero cuando me quiero autenticar con un usuario de ldap me tira el sigiuente error



Se ha producido un error inesperado del sistema.

java.lang.NullPointerException



alguna ayuda please¡¡¡¡
Jordi Baldó
RE: Problema integración Liferay+Active Directory
May 11, 2010 2:30 AM
Answer

Jordi Baldó

Rank: New Member

Posts: 7

Join Date: April 29, 2010

Recent Posts

Aunque sea dos años después !

Simplemente daros las gracias, seguiendo este hilo he podido configurar mi instalación de liferay para que se pueda logar contra mi AD !
Sergio Romero Zayas
RE: Problema integración Liferay+Active Directory
May 20, 2010 1:13 AM
Answer

Sergio Romero Zayas

Rank: Junior Member

Posts: 32

Join Date: April 14, 2008

Recent Posts

Si no es mucha indiscrepción, jejeje... Porque no nos comentas al resto COMO lo ha hecho. emoticon
Jordi Baldó
RE: Problema integración Liferay+Active Directory
May 28, 2010 8:17 AM
Answer

Jordi Baldó

Rank: New Member

Posts: 7

Join Date: April 29, 2010

Recent Posts

Al contrario, encantado de poder ayudar.

Yo parto de una base de datos tipica "lportal" en blanco.

Arranco el servidor y en la configuración a través del panel de control pongo la siguiente información que os detallo en
Attachment

Attachment

Attachment

Attachment

Attachments: Captura1.png (140.5k), Captura2.png (105.6k), Captura3.png (68.6k), Captura4.png (63.3k)
Joel Páez
RE: Problema integración Liferay+Active Directory
July 14, 2010 1:12 PM
Answer

Joel Páez

Rank: New Member

Posts: 1

Join Date: July 14, 2010

Recent Posts

Tengo una consulta, ya llevo trabajando cierto tiempo con liferay y actualmenet estoy con la versión 5.1.1, pero que por mejoras vamos a migrar a una futura versión 6, y tengo la misma configuración que la del 5.1 y la que vos pública y no funciona, ni siquiera importa un solo usuario del directorio activo de windows. solo me entrega este error por la terminal

useraccountcontrol=userAccountControl: 66048, msexchreciplimit=msExchRecipLimit: 64000}
com.liferay.portal.UserScreenNameException
at com.liferay.portal.service.impl.UserLocalServiceImpl.validateScreenName(UserLocalServiceImpl.java:3254)
at com.liferay.portal.service.impl.UserLocalServiceImpl.validate(UserLocalServiceImpl.java:3092)
at com.liferay.portal.service.impl.UserLocalServiceImpl.doAddUser(UserLocalServiceImpl.java:2289)
at com.liferay.portal.service.impl.UserLocalServiceImpl.addUser(UserLocalServiceImpl.java:326)
at sun.reflect.GeneratedMethodAccessor282.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:67)
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy78.addUser(Unknown Source)
at com.liferay.portal.service.UserLocalServiceUtil.addUser(UserLocalServiceUtil.java:182)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.addUser(PortalLDAPImporterImpl.java:273)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.importUser(PortalLDAPImporterImpl.java:558)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.importFromLDAPByUser(PortalLDAPImporterImpl.java:409)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.importFromLDAP(PortalLDAPImporterImpl.java:170)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.importFromLDAP(PortalLDAPImporterImpl.java:123)
at com.liferay.portal.security.ldap.PortalLDAPImporterImpl.importFromLDAP(PortalLDAPImporterImpl.java:86)
at com.liferay.portal.security.ldap.PortalLDAPImporterUtil.importFromLDAP(PortalLDAPImporterUtil.java:32)
at com.liferay.portlet.admin.messaging.LDAPImportMessageListener.doReceive(LDAPImportMessageListener.java:40)
at com.liferay.portlet.admin.messaging.LDAPImportMessageListener.receive(LDAPImportMessageListener.java:32)
at sun.reflect.GeneratedMethodAccessor278.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:56)
at $Proxy231.receive(Unknown Source)
at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper.receive(SchedulerEventMessageListenerWrapper.java:60)
at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:65)
at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)

y lo mismo me ocurre con la version 5.2.3