AnsweredAssumed Answered

Guía para autenticar contra Active directory // (V.3.4.c)

Question asked by alarde on May 20, 2011
Latest reply on Oct 16, 2013 by oskar201
Buenas a todos, después de mi odisea con el Active Directory de Windows, con alfresco y con el Tomcat por fin he conseguido conectar mi red de Active Directory con Alfresco y por lo tanto autentificar los usuarios atacando al AD.

Mi instalación de alfresco está montada sobre un Windows Server 2008 por lo que las rutas que daré serán todas las rutas por defecto que da alfresco para la instalación.

Lo primero que tengo que deciros es que lo único que hay que tocar es el archivo que se llama alfresco-global.properties que se encuentra en la siguiente ruta: C:\Alfresco\tomcat\shared\classes

Así que lo primero que vamos a hacer es ir a esta ruta y abrir en modo edición el archivo alfresco-global.properties

La siguiente configuración no se tiene que copiar y pegar simplemente, ya que hay que añadir datos del ldap y otras cositas que podreis ver. Toda la configuración que voy a poner se tiene que escribir debajo de todo lo que lleva el archivo alfresco-global.properties, no hay que eliminar NADA de ese archivo!!!

Las líneas que estén entre < >, se tendrán que modificar y habrá que eliminar los "< >" inclusive.

Configuración:

Lo primero a realizar es el tipo de autenticación que vamos a utilizar que es la siguiente:

authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1:passthru,ldap1:ldap

Por que las tres?

Está basado en La wiki de alfresco, ldap puede sincronizar por mediación del Active Directory, mientras que el passthru puede hacerlo por mediación del CIFS.

Alfresco NTLM, passthru y ldap configuration para CIFS

ntlm.authentication.sso.enabled=false
ntlm.authentication.authenticateCIFS=false
alfresco.authentication.authenticateCIFS=false
alfresco.authentication.allowGuestLogin=false
passthru.authentication.sso.enabled=false
passthru.authentication.authenticateCIFS=true
ldap.authentication.active=false
ldap.synchronization.active=true

Autenticación del dominio

passthru.authentication.useLocalServer=false
passthru.authentication.domain=
passthru.authentication.servers=<NetBIOS.DOMAIN>\\<Dirección.IP.de.tu.dominio>

Para que ningún desconocido pueda acceder a Alfresco

ntlm.authentication.sso.enables=false
ntlm.authentication.mapUnknownUserToGuest=false

No voy a utilizar FTP

passthru.authentication.authenticateFTP=false

Defino la cuenta de administrador, si vamos a querer más de una se separan por comas ","

passthru.authentication.guestAccess=false
passthru.authentication.defaultAdministratorUserNames=admin
passthru.authentication.connectTimeout=5000
passthru.authentication.offlineCheckInterval=300
passthru.authentication.protocolOrder=TCPIP,NETBIOS

Sincronización con LDAP, hay que definir el timpo de autenticación (simple en mi caso) y el servidor ldap

ldap.authentication.java.naming.security.authentication=simple         //esto habrá que cambiarlo según el caso, borrar este comentario.
ldap.authentication.userNameFormat=%s
ldap.authentication.allowGuestLogin=false
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://<Tu.Dirección.IP.Del.Servidor.Active.Directory>:389
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false

Ahora tendremos que poner la cuenta con privilegios de administración para conectarla con Active Directory

ldap.synchronization.java.naming.security.principal=<NetBIOS>\\<Nombre Admin> //esto habrá que cambiarlo, en mi caso he puesto únicamente: administrador
ldap.synchronization.java.naming.security.credentials=<Admin.password>//esto habrá que cambiarlo
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.groupDifferentialQuery=(&(objectclass=nogroup)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(&(objectclass=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512))
ldap.synchronization.personDifferentialQuery=(& (objectclass=user)(!(modifyTimestamp<\={0})))
ldap.synchronization.groupQuery=(objectclass\=group)

Sincronización por grupo y usuario por dominio

ldap.synchronization.groupSearchBase=cn\=users,dc=<Tu.dominio>,dc=com
ldap.synchronization.userSearchBase=cn\=users,dc=<Tu.dominio>,dc=com

Forma de acceso a Active Directory, no tendremos que cambiar nada

ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss’.0Z’
ldap.synchronization.userIdAttributeName=sAMAccountName
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=msExchALObjectVersion
ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupType=Nogroup
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
synchronization.synchronizeChangesOnly=true

Configuración CIFS

cifs.disableNativeCode=false
cifs.enabled=true
cifs.serverName=<Servidor.Donde.esta.alfresco>
cifs.domain=<NetBIOS.Domain>
cifs.hostannounce=true
cifs.sessionTimeout=500
cifs.ipv6.enabled=false
cifs.tcpipSMB.port=1445
cifs.netBIOSSMB.namePort=1137
cifs.netBIOSSMB.datagramPort=1138
cifs.netBIOSSMB.sessionPort=1139
cifs.WINS.autoDetectEnabled=true

Y ya lo tenemos todo

Ahora solo quedará apagar el servicio del tomcat, el del MySQL y volver a arrancar los dos.

Para el que no sepa cómo hacerlo, simplemente tendrá que ir a "ejecutar" y poner "services.msc", se abrirá una ventana nueva, ahí tenemos que buscar "alfrescoMySQL" y "alfrescoTomcat".

Gracias a todos los que me han ayudado en ESTE post por su incondición ayuda y gracias a andoylang.wordpress.com.

Espero que le pueda servir de ayuda a personas que como yo estamos iniciándonos en este mundillo de alfresco, que tantos quebraderos de cabeza nos dá jeje.

Un saludo!

Outcomes