Page 1 of 1

Error configuracion con AD - getUserWorkspace

PostPosted:Mon Oct 10, 2011 4:44 pm
by Ruben
Hola,

Estoy configurando OpenKM con idea de emplearlo en la empresa pero me estoy encontrando con un fallo, por lo que veo, bastante común para autenticar contra el AD de un Windows 2000. No consigo que cargue la página de inicio, da el siguiente error:

"Error de comunicación con el servidor (getUserWorkspace)"

El grupo UserRole tiene permisos sobre el directorio raíz "/okm:root/".

He probado infinidad de configuraciones, activado debug (no veo información que me ayude), leído bastante por aquí y por la documentación de OpenKM. Con ayuda de un sniffer creo que login-config.xml está correcto: veo que autentica, obtiene los roles, el problema supongo esté en la configuración de OpenKM.cfg que no consigue cargar bien los roles (tampoco puedo acceder al panel de administración).

Os muestro como tengo configurado el Active Directory y ambos ficheros de configuración, os agradecería si me podéis dar alguna pista para avanzar con este tema.
Code: Select all
DC=midominio,DC=com
|
`-- OU=midominio
    |-- OU=grupos
    |   |-- CN=AdminRole (usuario1)
    |   |-- CN=OpenKMadmins (usuario1)
    |   |-- CN=OpenKMroles (OpenKMusers	)
    |   |-- CN=OpenKMusers (usuario1,usuario2, usuario3, usuario4,@OpenKMroles)
    |   `-- CN=UserRole (usuario2,usuario3,usuario4)
    `-- OU=usuarios
        |-- OU=oficina1
        |   |-- CN=usuarioAD
        |   |-- CN=usuario1
        |   `-- CN=usuario2
        `-- OU=oficina2
            |-- CN=usuario3
            `-- CN=usuario4
login-config.xml
Code: Select all
    <application-policy name="OpenKM">
      <authentication>
        <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" >
          <module-option name="java.naming.provider.url">ldap://192.168.0.1</module-option>
          <module-option name="bindDN">usuarioAD@midominio.com</module-option>
          <module-option name="java.naming.security.authentication">simple</module-option>
          <module-option name="bindCredential">pass</module-option>
          <module-option name="baseCtxDN">OU=midominio,dc=midominio,dc=com</module-option>
          <module-option name="baseFilter">(sAMAccountName={0})</module-option>
          <module-option name="rolesCtxDN">ou=OpenKM,ou=grupos,OU=midominio,dc=midominio,dc=com</module-option>
          <module-option name="roleFilter">(member={1})</module-option>
          <module-option name="roleAttributeID">cn</module-option>
          <module-option name="roleAttributeIsDN">false</module-option>
          <module-option name="roleRecursion">-1</module-option>
          <module-option name="searchScope">ONELEVEL_SCOPE</module-option>
          <module-option name="defaultRole">UserRole</module-option>
        </login-module>
      </authentication>
   </application-policy>
OpenKM.cfg
Code: Select all
default.user.role=UserRole
default.admin.role=AdminRole

system.login.lowercase=on
principal.adapter=com.openkm.principal.LdapPrincipalAdapter

principal.ldap.server=ldap://192.168.0.1
principal.ldap.security.principal=cn=usuarioAD,ou=oficina1,ou=usuarios,ou=midominio,dc=midominio,dc=com
principal.ldap.security.credentials=pass

principal.ldap.user.search.base=dc=midominio,dc=com
principal.ldap.user.search.filter=(&(objectclass=user)(memberOf=ou=usuarios,ou=midominio,dc=midominio,dc=com))
principal.ldap.user.attribute=cn

principal.ldap.role.search.base=ou=OpenKM,ou=grupos,ou=midominio,dc=midominio,dc=com
principal.ldap.role.search.filter=(&(objectclass=group)(memberOf=cn=OpenKMroles,ou=OpenKM,ou=grupos,ou=midominio,dc=midominio,dc=com))
principal.ldap.role.attribute=sAMAccountName

principal.ldap.mail.search.base=ou=midominio,dc=midominio,dc=com
principal.ldap.mail.search.filter=(&(objectclass=person)(sAMAccountName={0}))
principal.ldap.mail.attribute=mail

principal.ldap.users.by.role.search.base=ou=OpenKM,ou=grupos,ou=midominio,dc=midominio,dc=com
principal.ldap.users.by.role.search.filter=(sAMAccountName={0})
principal.ldap.users.by.role.attribute=member

principal.ldap.roles.by.user.search.base=ou=OpenKM,ou=grupos,ou=midominio,dc=midominio,dc=com
principal.ldap.roles.by.user.search.filter=(sAMAccountName={0})
principal.ldap.roles.by.user.attribute=memberOf

Error en el log de Openkm:
Code: Select all
17:57:46,656 ERROR [[/OpenKM]] Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.openkm.frontend.client.bean.GWTWorkspace com.openkm.frontend.client.service.OKMWorkspaceService.getUserWorkspace() throws com.openkm.frontend.client.OKMException' threw an unexpected exception: java.lang.NullPointerException


Gracias, saludos.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Tue Oct 11, 2011 9:34 am
by jllort
Es un problema de configuracion.

Puedes postear unas cuantas líneas mas del log de error, para ver exactamente en que línea esta el null y entonces te podremos indicar que parámetro hay que corregir.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Tue Oct 11, 2011 10:03 am
by Ruben
Gracias jllort, este es el error:
Code: Select all
11:56:25,892 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)] Started in 46s:630ms
11:56:35,762 ERROR [[/OpenKM]] Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.openkm.frontend.client.bean.GWTWorkspace com.openkm.frontend.client.service.OKMWorkspaceService.getUserWorkspace() throws com.openkm.frontend.client.OKMException' threw an unexpected exception: java.lang.NullPointerException
        at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
        at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NullPointerException
        at com.openkm.servlet.frontend.WorkspaceServlet.getUserWorkspace(WorkspaceServlet.java:306)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
        ... 24 more

Y estas son las últimas líneas del log de login con el debug activado:
Code: Select all
11:56:36,225 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] initialize, instance=@21575155
11:56:36,225 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] Security domain: OpenKM
11:56:36,225 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] login
11:56:36,225 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] abort
11:56:36,230 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
11:56:36,230 TRACE [org.jboss.security.SecurityAssociation] clear, server=true
11:56:36,233 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
11:56:36,233 TRACE [org.jboss.security.SecurityAssociation] clear, server=true
11:56:36,405 TRACE [org.jboss.security.SecurityAssociation] getSubject, sc=org.jboss.security.SecurityAssociation$SubjectContext@19f242f{principal=usuario2,subject=17656871}
11:56:36,405 TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] Begin getAppConfigurationEntry(OpenKM), size=9
11:56:36,406 TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] End getAppConfigurationEntry(OpenKM), authInfo=AppConfigurationEntry[]:
[0]
LoginModule Class: org.jboss.security.auth.spi.LdapExtLoginModule
ControlFlag: LoginModuleControlFlag: required
Options:name=defaultRole, value=UserRole
name=baseFilter, value=(sAMAccountName={0})
name=bindDN, value=usuarioAD@midominio.com
name=rolesCtxDN, value=ou=OpenKM,ou=grupos,OU=midominio,dc=midominio,dc=com
name=baseCtxDN, value=OU=midominio,dc=midominio,dc=com
name=roleRecursion, value=-1
name=java.naming.security.authentication, value=simple
name=roleFilter, value=(member={1})
name=java.naming.provider.url, value=ldap://192.168.0.1
name=bindCredential, value=pass
name=roleAttributeIsDN, value=false
name=searchScope, value=ONELEVEL_SCOPE
name=roleAttributeID, value=cn

11:56:36,406 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] initialize, instance=@22317132
11:56:36,406 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] Security domain: OpenKM
11:56:36,406 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] login
11:56:36,406 TRACE [org.jboss.security.auth.spi.LdapExtLoginModule] abort
11:56:36,415 TRACE [org.jboss.security.SecurityAssociation] popRunAsIdentity, runAs=null
11:56:36,415 TRACE [org.jboss.security.SecurityAssociation] clear, server=true

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Tue Oct 11, 2011 11:05 am
by Ruben
El rol de administración (AdminRole) lo carga correctamente (tras reinicio de OpenKM). Al menos ya puedo acceder a la consola de administración para aplicar cambios. De todas formas un usuario con el rol AdminRole y sin UserRole se comporta igual al entrar en la aplicación que un usuario con el rol UserRole.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Thu Oct 13, 2011 5:07 pm
by Ruben
Aunque no tengo exactamente la misma configuración que en la documentación he ido probando con la aplicación testLdap.jar y parece todo correcto: obtencion usuarios, roles, mail usuario, roles por usuario. En el caso de usuarios por rol me obtiene creo que el cn y al ser el nombre real de usuario "Apellido, Nombre" solo muestra
Code: Select all
"Apellido\"
Podría ser el motivo del fallo?
Al cargar /okm:root/ sabéis si hay forma de hacer debug de los pasos que realiza? obtencion roles usuario, cotejar con el del directorio...?

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Sat Oct 15, 2011 9:00 am
by jllort
dos cosas:
1- verifica que en la administración los parametros estan correctos ( en el OpenKM.cfg solo se utilizan la primera vez como carga de datos ).
2- sube a la version the integration.openkm.com que ahí hay varios bugs corregidos y igual solucionamos este problema, en caso contrario vuelve a postear el log del error ( por que en la linea 306 no me cuadra que te de ahí el error ). La 5.1.X que sera la nueva 5.1.8 mientras terminamos de corregir algun bug que queda de la 5.1.7 ( tranquilo es estable ).

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Tue Oct 18, 2011 9:23 am
by Ruben
Buenas,

1- Sí está comprobado. Al principio no tenía acceso al panel de administración y tenía que forzar la carga de datos de OpenKM.cfg.
2- Voy a probar y os comento.


Gracias, saludos.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Tue Oct 18, 2011 10:20 am
by Ruben
Es suficiente con reemplazar el fichero OpenKM.war de la 5.1.7 con el 5.1.x de integración?

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Thu Oct 20, 2011 9:42 pm
by jllort
Si,es suficiente, pon como siempre en update el OpenKM.cfg aunque creo que para esta actualización no hace falta.

En breve actualizaremos el apartado de active directory con una solución que creemos que puede valer para la mayoría de instalaciones ( siempre habrá alguna que obviamente de problemas, pero en principio creemos que tenemos un configuración que puede ser standard en la mayoría de configuraciones que haya llevado a cabo el administrador en su active directory ).

Probablemente el lunes ya tengamos la página modificada en este sentido.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Fri Oct 21, 2011 7:02 am
by Ruben
Gracias jllort. El error getUserWorkspace ha desaparecido y la aplicación carga correctamente al hacer login con el war de integration.

Sin embargo ahora se produce un error al entrar en el panel de administración:

Application error
Class: javax.servlet.ServletException
Message: java.lang.NoClassDefFoundError: com/openkm/extension/frontend/client/widget/stamp/StampToolBarButton
Date: Fri Oct 21 08:56:19 CEST 2011
Code: Select all
08:55:23,056 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)] Started in 53s:186ms
08:55:43,508 WARN  [WorkspaceServlet] User is null!!!
08:55:43,508 WARN  [WorkspaceServlet] Please, check configuration principal.adapter=com.openkm.principal.DatabasePrincipalAdapter
08:56:19,536 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: com.openkm.extension.frontend.client.widget.stamp.StampToolBarButton
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
        at org.apache.jsp.admin.index_jsp._jspService(index_jsp.java:194)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:636)
Estoy con la version de integration bajada el 18 de octubre.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Fri Oct 21, 2011 12:08 pm
by pavila
Debe ser un resto de la instalación anterior. Para el JBoss, borra los directorios:

- $JBOSS_HOME/server/default/tmp
- $JBOSS_HOME/server/default/work

y vuelve a iniciar JBoss de nuevo.

Re: Error configuracion con AD - getUserWorkspace

PostPosted:Fri Oct 21, 2011 12:58 pm
by Ruben
Gracias pavila, ha funcionado.

Me queda integrarlo con la instalació que ya tengo con mysql y resto de configuraciones pero si ya funciona no debería dar problemas. De todas formas estaré atento a la nueva versión que saquéis.

Saludos.