• Errores luego de cambiar default.admin.role

  • 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.
 #39208  by fjleon
 
Saludos, en mi openkm 6.3 de prueba acabo de cambiar el valor default.admin.role de ROLE_ADMIN a GSL_OpenKm_Admin y ahora el sistema al arrancar da un monton de errores de no conseguir las carpetas y no me reconoce como administrador.

Hice luego el mismo cambio en applicationContext.xml y fue peor, puesto que ahora la aplicación no ubica los archivos y por lo tanto da los errores el tomcat.

Como puedo revertir el cambio en default.admin.role si no me lo deja administrar? Por medio de la base de datos? Cual sería la tabla? Estoy usando mysql
 #39209  by fjleon
 
Logré revertir el cambio editando la tabla OKM_CONFIG en mysql.

Ahora la pregunta es, que se debe hacer para tomar el cambio correctamente? Estoy tratando de migrar la autenticación a active directory y ahora ahora he hecho los cambios a nivel de la configuración para poder listar los usuarios
 #39226  by jllort
 
En una integración del ldap la activacion de la seguridad por el OpenKM.xml la tienes que hacer al final de todo. Primero asegurarte de configurar bien el tema de la administración. Cuando este seguro que eso esta bien entonces te puedes aventurar con el OpenKM.xml

Tu caso es el mas complicado, pero bueno que tampoco tiene mucho mas misterio. Los pasos serian:
1- Modificar default.admin.role
2- parar openkm
3- modificar OpenKM.xml
4- modificar applicationContext.xml
5- Arrancar la aplicacion

El login te puede fallar de varias formas, si nos dices como falla ( no se logea, se logea pero da un 403, se logea pero no entro en la administración etc... ) te podemos orientar sobre donde puede estar el fallo. En general es mas probable que este en el OpenKM.xml que no en la modificacion del applicationContext.xml ( fíjate en este fichero que hay un tag que pone ROLE_ cosa que tu grupo ha dejado de cumplir, con lo que esto tambien lo deberías cambiar por GSL_
 #39323  by fjleon
 
applicationContext.xml tiene dos valores referente a los roles:
Code: Select all
<beans:property name="rolePrefix" value="ROLE_"/>
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
debo cambiar los dos? En el caso del primero, seria GSL_OpenKm solamente, sin el _Admin?

El problema es que no logea, da authentication error en rojo, y no arroja nada alusivo en el catalina.log

Creamos un grupo GSL_OpenKM_Admin y coloqué mi usuario fleon dentro de dicho grupo

Este es mi usuario fleon:

CN=Francisco Leon,OU=Coordinador,OU=Apoyo,OU=Informatica,OU=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com
memberOf=CN=GSL_OpenKm_Admin

Estas son las partes relevantes de mi openkm.xml
Code: Select all
<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider ref="ldapAuthProvider"/>
  </security:authentication-manager>

    <beans:bean id="ldapAuthProvider" class="org.springframework.security.ldap.a
uthentication.LdapAuthenticationProvider">
        <beans:constructor-arg ref="ldapBindAuthenticator"/>
        <beans:constructor-arg ref="ldapAuthoritiesPopulator"/>
    </beans:bean>

    <beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <!-- MS Active Directory -->
        <beans:constructor-arg value="ldap://192.168.x.x:389/"/>
        <beans:property name="userDn" value="CN=apoyo,OU=Apoyo,OU=Informatica,OU
=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com"/>
        <beans:property name="password" value="xxxxxxx"/>
        <beans:property name="baseEnvironmentProperties">
            <beans:map>
                <beans:entry key="java.naming.referral" value="follow" />
            </beans:map>
        </beans:property>
    </beans:bean>

    <beans:bean id="ldapBindAuthenticator" class="org.springframework.security.ldap.authentication.BindAuthenticator">
        <beans:constructor-arg ref="contextSource"/>
        <beans:property name="userSearch" ref="userSearch"/>
    </beans:bean>

    <beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
        <!-- MS Active Directory -->
        <!-- user-search-base; relative to base of configured context source -->

        <beans:constructor-arg index="0" value=""/>
        <!-- user-search-filter -->
        <beans:constructor-arg index="1" value="(sAMAccountName={0})"/>
        <beans:constructor-arg index="2" ref="contextSource"/>
    </beans:bean>

    <beans:bean id="ldapAuthoritiesPopulator" class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
        <beans:constructor-arg ref="contextSource" />
        <beans:constructor-arg value="" />
        <beans:property name="groupSearchFilter" value="(member={0})"/>
        <beans:property name="groupRoleAttribute" value="CN" />
        <beans:property name="rolePrefix" value=""/>
        <beans:property name="searchSubtree" value="true"/>
        <beans:property name="convertToUpperCase" value="false"/>
        <beans:property name="ignorePartialResultException" value="true"/>
    </beans:bean>
Configuración en la base de datos:
Code: Select all
 principal.adapter                          | string   | com.openkm.principal.LdapPrincipalAdapter
 principal.ldap.server                      | string   | ldap://192.168.xxx.xxx:389   
 principal.ldap.security.principal          | string   | CN=apoyo,OU=Apoyo,OU=Informatica,OU=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com    
 principal.ldap.security.credentials        | string   | ********
 principal.ldap.user.attribute              | string   | sAMAccountName
 principal.ldap.user.search.base            | list     | dc=seguroscatatumbo,dc=COM 
 principal.ldap.user.search.filter          | string   | (&(objectclass=user)(|(memberOf=CN=GSL_OpenKM_Admin,OU=Apoyo,OU=Informatica,OU=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com)(memberOf=CN=GSL_OpenKM_User,OU=Apoyo,OU=Informatica,OU=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com))) |
Voy a ir probando con el applicationContext a ver
 #39351  by jllort
 
El ROLE_ tienes que modificarlo por GSL_OpenKm_ en el applicationContext.xml ( y la m de OpenKm debería ser mayúscula )
 #39416  by fjleon
 
Aun no logro resolver el problema, cuando trato de entrar al openkm ni siquiera veo la pagina de autenticación, da error 404 y no veo nada en el catalina.log. Asumo que el error proviene de modificar el default.admin.role en applicationContext.xml
 #39435  by jllort
 
Que no veas nada en el catalina.log es algo bastante malo, probablemente alguna etiqueta que no has cerrado bien o algo parecido. A ver que estas modificando el OpenKM.war o la carpeta /OpenKM que también esta en webapp ( porque igual lo mas fácil es sólo modificar la carpeta /OpenKM y eliminar el OpenKM.war ( que en realidad una vez deployada la aplicación ya no te hace falta ). Te lo comento porque será más cómodo de manejar.

Otra cosa, te puedo confirmar que esta modificación tiene que funcionar seguro, porque la tenemos con varios de nuestros clientes, o sea que alguna cosa no estas haciendo del todo bien, un 404 es que la aplicación no ha sido capaz de arrancar.
 #39574  by jllort
 
Si dejas el xml sin modificar la aplicación funciona correctamente y al modificar este xml te va mal ? En este caso el problema esta claro donde esta. Sube aquí el fichero original y el modificado ( en un zip ) y le hecharemos un ojo a ver si vemos algo raro.

En el catalina.log no te aparece ningún error ? para openkm, elimina el catalina.log, y con el fichero xml modificado arranca la aplicacion - error 404 -> coge este fichero y también ponlo dentro del zip.
 #39611  by fjleon
 
Saludos, anexo zip con todos los log, con el script .sql exportado de la configuración de los valores ldap, el applicationContext.xml y el OpenKM.xml.

El error es referente a los roles (no reconoce el cambio que hice de rol) y es mi mayor duda. yo cambié todo lo que decia ROLE_ADMIN y ROLE_USER a GSL_OpenKm_Admin y GSL_OpenKm_User.
El usuario "apoyo" que es el que uso para autenticar en active directory lo hice miembro de GSL_OpenKM_Admin. Dicho usuario está en CN=apoyo,OU=Apoyo,OU=Informatica,OU=Departamentos,OU=Maracaibo,OU=Oficina,OU=CORP,DC=seguroscatatumbo,DC=com

Antes de cambiar todo lo de los roles me dejaba entrar con el usuario local y me mostraba los usuarios del dominio en la administración, pero nunca he podido hacer login con los usuarios del dominio y al cambiar los roles me arroja 404 con el simple mensaje:

HTTP Status 404 - /OpenKM
type Status report
message /OpenKM
description The requested resource is not available.

Gracias por tu ayuda
(23.02 KiB) Downloaded 225 times
 #39624  by jllort
 
De entrada si ves el catalina.log, verá rapidamente el error que da:
Code: Select all
Caused by: java.lang.IllegalArgumentException: Unsupported configuration attributes: [GSL_OpenKm_Admin]
Something better:
Code: Select all
<beans:constructor-arg>
    <beans:bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
      <beans:constructor-arg ref="contextSource"/>
      <beans:constructor-arg value="OU=CORP,DC=seguroscatatumbo,DC=co"/>
      <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>
Code: Select all
<beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
  <beans:constructor-arg index="0" value="OU=CORP,DC=seguroscatatumbo,DC=co" />
  <beans:constructor-arg index="1" value="(sAMAccountName={0})" />
  <beans:constructor-arg index="2" ref="contextSource" />
  <beans:property name="searchSubtree" value="true" />
</beans:bean>
the applicationContext.xml seems right, but I'm worried about lowercase could you write role uppercase GSL_OPENKM_ADMIN and also role prefix GSL_OPENKM_

Anyway seems it doesn't like applicationContex.xml entry -> that is the reason of 404 error. See catalina.log, meanwhile this error persists application is not going up.

With older openkm also was the option:
Code: Select all
<security:intercept-url pattern="/admin/**" access="hasRole('OPENKM_ROLE_ADMIN')" />
But I think is not the actual case.
 #39640  by fjleon
 
Hice los cambios, pase todo a mayuscula, llene el value en los dos ejemplos dados y sigue dando el mismo error.
No le gusta cambiar el rol.

La idea de integrarlo con active directory es que openkm supiera el rol a tomar, si fuese usuario o administrador
 #39654  by jllort
 
Hay un poltergeist raro, porque parece que esto no funciona, pero no tengo claro el porque ? Lo tendremos que mirar con calma.
 #39655  by fjleon
 
Fijate en http://stackoverflow.com/questions/9868 ... g-security parece que cambiar el nombre de los roles requiere de configuración adicional, voy a tratar de hacer lo que dice alli (comienza por eliminar todos los prefijos de los roles)

Me parece raro que nadie haya tenido este problema, o nadie usa active directory con openkm o los pocos que lo usan colocan los grupos en su AD por defecto de spring security
 #39668  by jllort
 
Lo tenemos que investigar con calma, puede ser que al subir de versión el spring security sea necesario añadir alguna cosa mas ? en cualquier caso algo no termina de estar correcto, lo estamos investigando.

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.