domingo, 18 de diciembre de 2016

Alfresco con Active Directory

     Muchos días han pasado desde mi ultimo post, pero nunca es tarde para hablar de Alfresco. Este gran gestor empresarial para manejo de contenidos, tiene su origen nada menos que en Documentum por lo que resultara muy útil vincularlo con Active Directory.
     Dentro de la wiki oficial hay información como vincularlo con ldap, también hay un ejemplo de validación Alfresco contra un Windows Server 2003. Vale la pena aclarar que esta configuración vinculara nuestro gestor de contenidos  con versiones 2008 en adelante peeeero de forma temporal y llenando nuestra bitácora de eventos con entradas WARN, lo cual no es muy bueno, sobre todo si somos EVENT VIEWER STALKER ☺
     Y la configuración sugerida de Alfresco para versiones Windows Server 2008 en adelante...

## Editamos el archivo alfresco-global.properties para que quede de la siguiente manera:

### AD authentication only ###
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap-ad1:ldap-ad
ldap.authentication.active=true
ldap.authentication.allowGuestLogin=true
ldap.authentication.userNameFormat=%s@MI_DOMINIO.local
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://MI.SERVER.MI_DOMINIO.local:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false

##EL USUARIO alfresco (EN ESTE CASO) DEBERA SER CREADO EN Active Directory

ldap.authentication.defaultAdministratorUserNames=alfresco 
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=alfresco@MI_DOMINIO.local
ldap.synchronization.java.naming.security.credentials=
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.attributeBatchSize=1000
synchronization.synchronizeChangesOnly=false
synchronization.allowDeletions=true
synchronization.syncWhenMissingPeopleLogIn=true 
ldap.synchronization.groupQuery=objectclass\=group
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(!(modifyTimestamp<\={0})))

## cms_alfresco SERA EL GRUPO DONDE ESTARA EL USUARIO alfresco

ldap.synchronization.personQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(|(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)))

ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(|(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local))(!(modifyTimestamp<\={0})))

ldap.synchronization.groupSearchBase=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local

ldap.synchronization.userSearchBase=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local

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=company
ldap.synchronization.defaultHomeFolderProvider=largeHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupDisplayNameAttributeName=displayName
ldap.synchronization.groupType=group
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true