Page 1 of 1

Problema JBOSS LDAP

PostPosted:Mon Jul 09, 2012 3:22 pm
by agm
Hola,

Estoy intentando autenticar OpenKM contra LDAP pero me está siendo imposible lograr que el JBoss me deje pasar. Mi configuración es la siguiente
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://ldap.test.usb.ve:389</module-option>
            <module-option name="java.naming.security.authentication">simple</module-option>
            <module-option name="bindDN">cn=reader,ou=accounts,ou=Administradores,dc=usb,dc=ve</module-option>
            <module-option name="bindCredential">****</module-option>
            <module-option name="baseCtxDN">ou=Usuarios,dc=usb,dc=ve</module-option>
            <module-option name="baseFilter">(&(objectClass=posixAccount)(shadowFlag=1)(uid={0}))</module-option>
            <module-option name="rolesCtxDN">ou=OpenKM,ou=Aplicaciones,dc=usb,dc=ve</module-option>
            <module-option name="roleFilter">(&(objectclass=posixGroup)(memberUid={0}))</module-option>
            <module-option name="roleAttributeIsDN">false</module-option>
            <module-option name="roleNameAttributeID">cn</module-option>
            <module-option name="roleRecursion">-1</module-option>
            <module-option name="searchScope">SUBTREE_SCOPE</module-option>
            <!-- <module-option name="defaultRole">UserRole</module-option> -->
            <module-option name="allowEmptyPasswords">false</module-option>
         </login-module>
       </authentication>
    </application-policy>
Comenté la opción name="defaultRole", para que no fuerce a todos los usuarios en el rol defaultRole; ya que el principal problema que tenía era que podría autenticarme pero todos los usuarios (sin importar que estuviese en AdminRole o UserRole) caen con el rol UserRole; y jamás podía ver el panel administrativo. Estuve leyendo en el foro que era debido a que tenía activada esa opción y ya no es requerida.

Asimismo coloqué el Jboss en modo debug y descubro que no logra obtener del LDAP mi respectivo rol. Estoy usando la herramienta testLdap.jar y me funciona perfecto (getUsers, getRoles, getRolesByUser, etc), pero claro, esta herramienta va contra el OpenKM.cfg y no contra el login-config.xml (el que autentica/chequea primero). En el debug del jboss obtengo:

Principal: agm
Principal: Roles(members)

(notar que no obtiene los correspondientes roles). La estructura de mi LDAP en la definicion de roles es tan simple como:
Code: Select all
dc=usb
   dc=Aplicaciones
      ou=OpenKM
         cn=UserRole, objectClass=posixGroup, memberUid = agm, memberUid = lldiaz
         cn=AdminRole, objectClass=posixGroup, memberUid = martinezm, memberUid = rivasp
      ou=Usuarios
         ......
Saludos

Re: Problema JBOSS LDAP

PostPosted:Tue Jul 10, 2012 8:25 pm
by jllort
Móntate el apache ldap studio y prueba las queries por que fijo que no estan bien.

Voy a asumir que todos los roles son hijos de ou=OpenKM,ou=Aplicaciones,dc=usb,dc=ve

Algo de esto de aquí debe estar fallando:
Code: Select all
<module-option name="roleFilter">(&(objectclass=posixGroup)(memberUid={0}))</module-option>
<module-option name="roleAttributeIsDN">false</module-option>
<module-option name="roleNameAttributeID">cn</module-option>
Hay dos formas de plantear la consulta, de los usuarios cuelgan los roles o a la inversa ( tienes que saber en tu ldap cual de las dos opciones tienes, o si tienes las dos disponibles ) a partir de aquí puedes ir planteando el tipo de consulta.

En la wiki http://wiki.openkm.com/index.php/Active ... OpenKM_5.1 fíjate que se pueden sacar de las dos formas y una no tiene nada que ver con la otra. La consulta que estas haciendo te tiene que funcionar con el apache ldap studio ... yo empezaria a jugar por ahí teniendo en cuenta que este {0} es el id del usuario con el que te has logeado.

Re: Problema JBOSS LDAP

PostPosted:Sun Jul 15, 2012 5:56 am
by agm
Problema solucionado, no sé que sucedía. Tiré y tiré flechas hasta que funcionó todo, la parte de los roles quedó así:
Code: Select all
      
            <module-option name="roleAttributeIsDN">false</module-option>
            <module-option name="roleAttributeID">cn</module-option>
            <module-option name="roleNameAttributeID">cn</module-option>
            <module-option name="matchOnUserDN">true</module-option>
            <module-option name="roleRecursion">-1</module-option>
            <module-option name="searchScope">SUBTREE_SCOPE</module-option>
Sin embargo tengo una duda off-topic; supongamos que tengo varios grupos de personas y quiero que cada uno de ellos tenga su rol (para asociarlos a su carpeta grupal). Sin duda alguna debo agregarlos a todos juntos dentro de UserRole (para que el Jboss los deje "pasar") y... ¿dentro del OpenKM agregar esos esos nuevos roles con sus respectivos usuarios? ¿Cómo hago para asignarles a los usuarios que autentica el LDAP determinados profiles que cree? (es complicado porque los usuarios los tengo en el LDAP y no sé como asociar un profile a un usuario, por eso la pregunta es: para un usuario nuevo: ¿debo agregarlo al LDAP en UserRole y luego agregarlo en el OpenKM?). Me surgió la duda al pensar que podría agregar los muchos roles más en el LDAP, pero no sé si sea el camino correcto.

Saludos

Saludos

Re: Problema JBOSS LDAP

PostPosted:Sun Jul 15, 2012 8:47 am
by jllort
Si la integración es completa, los usuarios y roles estan todos en el ldap y la antigua configuración en base de datos queda en obsoleta. Si has conseguido autenficiarte ahora te falta trabajar en obtener las listas de usuarios / roles / mails desde el ldap. Modificar el DatabasePrincipalAdapter por el LdapPrincipalAdapter ( esto precisa de reiniciar la aplicación ) etc.... Por lo que nos cuentas estas a medio camino ( solo te has autentificado ) ... ahora te queda el resto. Te quedan unos cuantos parametros de configuración en la administración ( segundo icono por la izquierda ).