cancel
Showing results for 
Search instead for 
Did you mean: 

Autenticación con Active Directory

baldomero
Champ in-the-making
Champ in-the-making
Hola a todos,
he instalado Alfresco 2.1 Community sobre una distribución Debian, estoy teniendo problemas para conectarlo con mi Active Directory de Windows. Al principio pensaba que tal vez no se podía conectar pero al final lo he logrado a medias. He tocado el fichero de configuración:

ldap-authentication-context.xml

Y me queda así:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   
    <bean name="authenticationDao" class="org.alfresco.repo.security.authentication.DefaultMutableAuthenticationDao" >
        <property name="allowDeleteUser">
            <value>false</value>
        </property>
    </bean>   
  
    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl">
        <property name="LDAPInitialDirContextFactory">
            <ref bean="ldapInitialDirContextFactory"/>
        </property>
        <property name="userNameFormat">
            <value>CN=%s,CN=Users,DC=MI_DOMINIO,DC=com</value>
        </property>
    </bean>
   
    <bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
        <property name="initialDirContextEnvironment">
            <map>
                <entry key="java.naming.factory.initial">
                    <value>com.sun.jndi.ldap.LdapCtxFactory</value>
                </entry>
               
                <entry key="java.naming.provider.url">
                    <value>ldap://MI_IP:389</value>
                </entry>
               
                <entry key="java.naming.security.authentication">
              <value>simple</value>
                </entry>
               
            </map>
        </property>
    </bean>

</beans>

El problema que tengo es que mi Active Directory está organizado de la siguiente forma, en un primer nivel tengo:

- CN=Users,DC=MI_DOMINIO,DC=com

En un segundo nivel tengo (justo debajo del primer nivel)
- CN=Nombre1 Apellidos1
- CN=Nombre2 Apellidos2
- …..

Por lo tanto la búsqueda base DN:

        <property name="userNameFormat">
            <value>CN=%s,CN=Users,DC=MI_DOMINIO,DC=com</value>
        </property>

Me permite autenticarme a Alfresco utilizando como login: Nombre y Apellidos del usuario, y como clave: la clave.

No consigo utilizar como login el atributo sAMAccountName que hay dentro de cada registro de cada usuario. En otras aplicaciones puedo utilizar algún tipo de filtro adicional como:

(&(objectclass=*)(sAMAccountName=MI_LOGIN))

En Alfresco no cómo modificar la búsqueda para que use el atributo sAMAccountName. ¿Alguien puede ayudarme?

Muchas gracias!!!

:wink:
20 REPLIES 20

venzia
Star Collaborator
Star Collaborator
si no me equivoco es tan facil como cambiar :
        <property name="userNameFormat">
            <value>CN=%s,CN=Users,DC=MI_DOMINIO,DC=com</value>
        </property>
por

       <property name="userNameFormat">
               <value>samaccountname=%s</value>
       </property>
Puedes verlo en http://wiki.alfresco.com/wiki/Enterprise_Security_and_Authentication_Configuration#Active_Directory_...
Espero que te sirva.
Saludos

baldomero
Champ in-the-making
Champ in-the-making
Muchas gracias Javier por tu ayuda, pero no me ha funcionado, he probado distintas alternativas pero siempre que devuelve que el usuario es erróneo:

    <property name="userNameFormat">
            <value>samaccountname=%s</value>
    </property>

    <property name="userNameFormat">
            <value>sAMAccountName=%s</value>
    </property>

    <property name="userNameFormat">
            <value>sAMAccountName=%s,CN=Users,DC=MI_DOMINIO,DC=com</value>
    </property>

Pero al final nada de nada, he visto el enlace que me pasabas y efectivamente ahí indica lo que tu me dices. Seguiré probando.

Gracias!!  :wink:

venzia
Star Collaborator
Star Collaborator
Hola baldomero, échale un vistazo a este post que habla de la solución a este tema :
http://forums.alfresco.com/en/viewtopic.php?t=3156
Espero que te sirva.
Saludos

baldomero
Champ in-the-making
Champ in-the-making
Hola Javier,
tampoco me ha funcionado la solución del post, he creado un usuario en el Active Directory activándole el atributo "encriptación reversible". He probado el ejemplo poniendo el tipo de autenticación DIGEST-MD5, pero nada de nada…

Sin embargo he encontrado la solución, he seguido buscando y probando, en el siguiente enlace

http://forums.alfresco.com/en/viewtopic.php?f=9&t=13357&p=49206&hilit=active+directory

me ha dado la clave.

En definitiva he incluido en el parámetro userNameFormat el dominio, y funciona!!

Incluyo la configuración definitiva para el que le pueda servir:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <bean name="authenticationDao" class="org.alfresco.repo.security.authentication.DefaultMutableAuthenticationDao" >
        <property name="allowDeleteUser">
            <value>false</value>
        </property>
    </bean>

    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl">
        <property name="LDAPInitialDirContextFactory">
            <ref bean="ldapInitialDirContextFactory"/>
        </property>
        <property name="userNameFormat">
           <value>%s@MI_DOMINIO</value>
        </property>
    </bean>

    <bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
        <property name="initialDirContextEnvironment">
            <map>
                <entry key="java.naming.factory.initial">
                    <value>com.sun.jndi.ldap.LdapCtxFactory</value>
                </entry>

                <entry key="java.naming.provider.url">
                    <value>ldap://IP_MI_SERVIDOR_ACTIVE_DIRECTORY:389</value>
                </entry>

                <entry key="java.naming.security.authentication">
                  <value>simple</value>
                </entry>
            </map>
        </property>
    </bean>

</beans>

Gracias!!

venzia
Star Collaborator
Star Collaborator
Perfecto !! … ya tomamos nota los demás … :wink:
Gracias por compartir la solución. Si pudiera te daría un punto  :lol:!!
Saludos

ingcarloshud
Champ in-the-making
Champ in-the-making
Alguien me podria orientar, en la sincronización??? Resulta q necesito que al ingreso de cada usuario se capturen los campos automaticamente (nombres, apellidos, correo empresarial, etc…), por lo q tengo entendido segun el wiki toca configurar los triggers en el archivo scheduled-jobs-context.xml pero al hacerlo tal cual, la aplicacion se daña completamente.  Alguien puede echarme una con este problemita.
Saludos!!!

ajv
Champ in-the-making
Champ in-the-making
Hola ingcarloshud,

Sería más fácil ayudarte si nos indicas los cambios que has realizado para intentar conseguir la sincronización, así como los errores que recibes en el fichero alfresco.log.
Desde la versión 2.1 se cambió un poco la forma de configurar el LDAP, facilitándolo mucho, ya que prácticamente consiste en modificar un par de ficheros de propiedades (ldap-authentication.properties y ldap-synchronisation.properties).
Hasta luego!

sakarina
Champ in-the-making
Champ in-the-making
Buenas,

Tal como ha explicado Baldomero he conseguido autenticar con Active Directory en Alfresco. Pero cuando he intentado utilizar el usuario "admin" que viene por defecto en la aplicación como Administrador no me reconoce la contraseña, ya que éste usuario no pertenece a mi Active Directory. ¿Cómo puedo asignar un administrador? ¿Es posible que el administrador no pertenezca al Active Directory?

Estoy utilizando la versión de Alfresco 2.9 Community bajo un windows 2003 server.

Muchas gracias de antemano.

pachacute
Champ in-the-making
Champ in-the-making
Por lo que tengo entendido es el administrador que queda luego de la sincronizacion es el administrador del active directory.
No estoy muy seguro ya que en mi trabajo no me facilitaron el user ni pass del active directory, pensaron que lo podria modificar.