OpenKM y Active Directory

Problemas con la instalación de OpenKM? No problemo, la solución está más cerca de lo que piensas.
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.
Post Reply
jorge.ibanez
Fresh Boarder
Fresh Boarder
Posts: 2
Joined: Fri Jul 07, 2017 10:08 am

OpenKM y Active Directory

Post by jorge.ibanez » Fri Jul 07, 2017 10:14 am

Buenos días,

He instalado OpenKM 6.3.2 siguiendo los pasos que indica la documentación y funciona todo correctamente.

Ahora estoy intentando integrarlo con AD, he seguido los pasos de la documentación. En el panel de administración he conseguido llegar a ver los usuarios del dominio a los cuales quiero dar permisos de acceso pero a la hora de modificar el fichero OpenKM.xml e intentar loguearme con un usuario del dominio me aparece el siguiente error:

Code: Select all

2017-07-07 12:03:20,883 [http-bio-0.0.0.0-8080-exec-5] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OpenKM].[default]- Servlet.service() para servlet default lanzó excepción
org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 3
        at org.springframework.security.ldap.SpringSecurityLdapTemplate.searchForSingleEntryInternal(SpringSecurityLdapTemplate.java:243)
        at org.springframework.security.ldap.SpringSecurityLdapTemplate$3.executeWithContext(SpringSecurityLdapTemplate.java:198)
        at org.springframework.ldap.core.LdapTemplate.executeWithContext(LdapTemplate.java:807)
        at org.springframework.ldap.core.LdapTemplate.executeReadOnly(LdapTemplate.java:793)
        at org.springframework.security.ldap.SpringSecurityLdapTemplate.searchForSingleEntry(SpringSecurityLdapTemplate.java:196)
        at org.springframework.security.ldap.search.FilterBasedLdapUserSearch.searchForUser(FilterBasedLdapUserSearch.java:116)
        at org.springframework.security.ldap.authentication.BindAuthenticator.authenticate(BindAuthenticator.java:90)
        at org.springframework.security.ldap.authentication.LdapAuthenticationProvider.doAuthentication(LdapAuthenticationProvider.java:178)
        at org.springframework.security.ldap.authentication.AbstractLdapAuthenticationProvider.authenticate(AbstractLdapAuthenticationProvider.java:61)
        at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
        at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:174)
        at org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:94)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:194)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Este es mi fichero OpenKM.xm, aclarar que los ROLE_ADMIN y ROLE_USER son dos grupos de mi AD en los cuales meto los usuarios y cuyo objetivo es que los permisos en la aplicación se establezcan mediante estos grupos:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:security="http://www.springframework.org/schema/security"
             xmlns:task="http://www.springframework.org/schema/task"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
                                 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                                 http://www.springframework.org/schema/security
                                 http://www.springframework.org/schema/security/spring-security-3.1.xsd
                                 http://www.springframework.org/schema/task
                                 http://www.springframework.org/schema/task/spring-task-3.1.xsd">

<security:authentication-manager alias="authenticationManager">
     <security:authentication-provider ref="ldapAuthProvider" />
  </security:authentication-manager>

<beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
  <beans:constructor-arg value="ldap://172.16.0.20"/>
  <beans:property name="userDn" value="CN=Sistemas TIC,CN=Users,DC=sisifo,DC=this"/>
  <beans:property name="password" value="MICONTRASEÑA"/>
  <beans:property name="baseEnvironmentProperties">
     <beans:map>
        <beans:entry>
          <beans:key>
            <beans:value>java.naming.referral</beans:value>
	  </beans:key>
          <beans:value>follow</beans:value>
        </beans:entry>
      </beans:map>
   </beans:property>
</beans:bean>
<beans:bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
  <beans:constructor-arg>
    <beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
      <beans:constructor-arg ref="contextSource"/>
      <beans:property name="userSearch" ref="userSearch"/>
    </beans:bean>
  </beans:constructor-arg>
  <beans:constructor-arg>
    <beans:bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
      <beans:constructor-arg ref="contextSource"/>
      <beans:constructor-arg value="DC=sisifo,DC=this"/>
      <beans:property name="groupSearchFilter" value="member={0}"/>
      <beans:property name="groupRoleAttribute" value="cn"/>
      <beans:property name="searchSubtree" value="true" />
      <beans:property name="convertToUpperCase" value="false" />
      <beans:property name="rolePrefix" value="" />
    </beans:bean>
  </beans:constructor-arg>
</beans:bean>

<beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
  <beans:constructor-arg index="0" value="OU=ou_scati,DC=sisifo,DC=this" />
  <beans:constructor-arg index="1" value="(&amp;(objectclass=user)(|(memberOf=CN=ROLE_ADMIN,OU=ou_gg_sc,OU=ou_scati,DC=sisifo,DC=this)(memberOf=CN=ROLE_USER,OU=ou_gg_s$
  <beans:constructor-arg index="2" ref="contextSource" />
  <beans:property name="searchSubtree" value="true" />
</beans:bean>

</beans:beans>


¿Podéis echarme una mano?

Muchas gracias

Un Saludo

jllort
Moderator
Moderator
Posts: 9447
Joined: Fri Dec 21, 2007 11:23 am
Location: Sineu - ( Illes Balears ) - Spain
Contact:

Re: OpenKM y Active Directory

Post by jllort » Sun Jul 09, 2017 7:30 pm

Primero, te aconsejamos que instales la version 6.3.4 que es la última ( en vez de la 6.3.2 )
Segundo, mejor que empezar por configurar los parametros de openkm ( listas de usuarios y roles ) y una vez esto lo tengas funcionando correctamente entonces te puedes lanzar con el OpenKM.xml ( esto te dará menos problemas )

Utiliza esta configuración como referencia https://docs.openkm.com/kcenter/view/ok ... roles.html

Fíjate que el problema es que deberías tener un resultado para la consulta y tienes 3, esto es debido a que esto es incorrecto:

Code: Select all

 <beans:constructor-arg index="1" value="(&amp;(objectclass=user)(|(memberOf=CN=ROLE_ADMIN,OU=ou_gg_sc,OU=ou_scati,DC=sisifo,DC=this)(memberOf=CN=ROLE_USER,OU=ou_gg_sc,OU=ou_scati,DC=sisifo,DC=this)))
Debería ser algo parecido a esto ( el user id en ldap viene determinado por el atributo sAMAccountName ):

Code: Select all

<beans:constructor-arg index="1" value="(&amp;(sAMAccountName={0})(|(memberOf=CN=ROLE_ADMIN,OU=ou_gg_sc,OU=ou_scati,DC=sisifo,DC=this)(memberOf=CN=ROLE_USER,OU=ou_gg_sc,OU=ou_scati,DC=sisifo,DC=this)))" />

jorge.ibanez
Fresh Boarder
Fresh Boarder
Posts: 2
Joined: Fri Jul 07, 2017 10:08 am

Re: OpenKM y Active Directory

Post by jorge.ibanez » Mon Jul 10, 2017 9:39 am

Muchísimas gracias, era únicamente la linea que me has indicado, la he modificado y ha comenzado a funcionar correctamente.

Adicionalmente he actualizado a la versión 6.3.4 y todo perfecto.

Muchas gracias por la ayuda, da gusto contar con foreros así.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest