• Error configuracion con AD - getUserWorkspace

  • OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #12527  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.
 #12535  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.
 #12538  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
 #12540  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.
 #12564  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...?
 #12591  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 ).
 #12622  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.
 #12652  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.
 #12655  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.
 #12660  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.
 #12661  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.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.