Alfresco es una solución que se asemeja a Sharepoint de Microsoft pero podríamos decir que es mucho mas completo y económico.
Uno de los aspectos que mas nos han solicitado es poder tomar los usuarios que tienen creados en el Active Directory de Windows o Zentyal, el famoso Single Sign On.
A continuación veremos como realizar la respectiva configuración de Alfresco para lograr este objetivo.
Ingresamos a la ruta:
root@alfresco:#cd /opt/alfresco-4.0.d/tomcat/shared/classes
Editamos el Archivo:
alfresco-global.properties
Hasta el punto anterior todo debe de ir bien, ahora como autenticar contra Zentyal y Contra AD.
Configuración de Alfresco contra Zentyal
A continuación tendrán todo lo que posee el archivo (alfresco-global.properties) para poder autenticar contra Zentyal, solo cambien las lineas donde esta en negrilla:
###############################
## Common Alfresco Properties ##
###############################
dir.root=/opt/alfresco-4.0.d/alf_data
alfresco.context=alfresco
alfresco.host=127.0.0.1
alfresco.port=8080
alfresco.protocol=http
share.context=share
share.host=127.0.0.1
share.port=8080
share.protocol=http
### database connection properties ###
db.driver=org.postgresql.Driver
db.username=alfresco
db.password=Password BD (se configura en la instalacion)
db.name=alfresco
db.url=jdbc:postgresql://localhost:5432/${db.name}
### FTP Server Configuration ###
ftp.enabled=false
ftp.port=21
ftp.ipv6.enabled=false
### RMI service ports ###
alfresco.rmi.services.port=50500
avm.rmi.service.port=0
avmsync.rmi.service.port=0
attribute.rmi.service.port=0
authentication.rmi.service.port=0
repo.rmi.service.port=0
action.rmi.service.port=0
deployment.rmi.service.port=0
### External executable locations ###
ooo.exe=/opt/alfresco-4.0.d/openoffice/program/soffice.bin
ooo.enabled=true
ooo.port=8100
ooo.port=8100
img.root=/opt/alfresco-4.0.d/common
img.dyn=${img.root}/lib
img.exe=${img.root}/bin/convert
swf.exe=/opt/alfresco-4.0.d/common/bin/pdf2swf
jodconverter.enabled=false
jodconverter.officeHome=/opt/alfresco-4.0.d/openoffice
jodconverter.portNumbers=8100
### Initial admin password ###
alfresco_user_store.adminpassword=c3dc537c6ba26089f148c09a42c8f019
### E-mail site invitation setting ###
notification.email.siteinvite=false
### File Protocol Root ###
protocols.rootPath=/${spaces.company_home.childname}/${spaces.sites.childname}
### License location ###
dir.license.external=/opt/alfresco-4.0.d
### Solr indexing ###
index.subsystem.name=solr
dir.keystore=${dir.root}/keystore
solr.port.ssl=8443
### BPM Engine ###
system.workflow.engine.jbpm.enabled=false
###Autenticacion###
authentication.chain=passthru1:passthru,ldap1:ldap,alfrescoNtlm1:alfrescoNtlm
ntlm.authentication.sso.enabled=false
ntlm.authentication.authenticateCIFS=true
ldap.authentication.active=true
ldap.synchronization.active=false
ldap.authentication.java.naming.provider.url=ldap://IPSERVIDORZENTYAL:389
ldap.authentication.userNameFormat=uid=%s,ou=Users,dc=zentyal
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.defaultAdministratorUserNames=admin
ldap.synchronization.java.naming.security.principal=cn=USUARIOADMINZENTYAL,dc=DOMINOIZENTYAL
ldap.synchronization.java.naming.security.credentials=PASSADMINZENTYAL
ldap.synchronization.userSearchBase=ou=Users,dc=DOMINIOZENTYAL
ldap.synchronization.groupSearchBase=ou=Groups,dc=DOMINIOZENTYAL
ldap.synchronization.personQuery=(&(uid=%v)(objectclass=posixAccount))
ldap.synchronization.groupQuery=(objectclass=posixGroup)
synchronization.synchronizeChangesOnly=false
synchronization.syncOnStartup=true
synchronization.syncWhenMissingPeopleLogIn=true
ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider
passthru.authentication.useLocalServer=false
passthru.authentication.sso.enabled=false
passthru.authentication.allowGuestLogin=true
passthru.authentication.servers=IPSERVERZENTYAL
passthru.authentication.domain=alge.net
passthru.authentication.defaultAdministratorUserNames=admin
passthru.authentication.connectTimeout=5000
passthru.authentication.offlineCheckInterval=300
passthru.authentication.protocolOrder=TCPIP,NETBIOS
passthru.authentication.authenticateCIFS=true
passthru.authentication.authenticateFTP=true
Configuración de Alfresco contra AD Windows Server 2008 R2
###############################
## Common Alfresco Properties #
###############################
dir.root=/opt/alfresco-4.0.d/alf_data
alfresco.context=alfresco
alfresco.host=127.0.0.1
alfresco.port=8080
alfresco.protocol=http
share.context=share
share.host=127.0.0.1
share.port=8080
share.protocol=http
### database connection properties ###
db.driver=org.postgresql.Driver
db.username=alfresco
db.password=Password BD (se configura en la instalacion)
db.name=alfresco
db.url=jdbc:postgresql://localhost:5432/${db.name}
### FTP Server Configuration ###
ftp.enabled=true
ftp.port=21
ftp.ipv6.enabled=false
### RMI service ports ###
alfresco.rmi.services.port=50500
avm.rmi.service.port=0
avmsync.rmi.service.port=0
attribute.rmi.service.port=0
authentication.rmi.service.port=0
repo.rmi.service.port=0
action.rmi.service.port=0
deployment.rmi.service.port=0
### External executable locations ###
ooo.exe=/opt/alfresco-4.0.d/openoffice/program/soffice.bin
ooo.enabled=true
ooo.port=8100
ooo.port=8100
img.root=/opt/alfresco-4.0.d/common
img.dyn=${img.root}/lib
img.exe=${img.root}/bin/convert
swf.exe=/opt/alfresco-4.0.d/common/bin/pdf2swf
jodconverter.enabled=false
jodconverter.officeHome=/opt/alfresco-4.0.d/openoffice
jodconverter.portNumbers=8100
### Initial admin password ###
alfresco_user_store.adminpassword=c3dc537c6ba26089f148c09a42c8f019
### E-mail site invitation setting ###
notification.email.siteinvite=false
### File Protocol Root ###
protocols.rootPath=/${spaces.company_home.childname}/${spaces.sites.childname}
### License location ###
dir.license.external=/opt/alfresco-4.0.d
### Solr indexing ###
index.subsystem.name=solr
dir.keystore=${dir.root}/keystore
solr.port.ssl=8443
### BPM Engine ###
system.workflow.engine.jbpm.enabled=false
##Autenticacion##
authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1:passthru,ldap1:ldap
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=MIDOMINIO.NET
passthru.authentication.servers=IPDELDOMINIO
passthru.authentication.connectTimeout=5000
passthru.authentication.offlineCheckInterval=300
passthru.authentication.protocolOrder=TCPIP,NETBIOS
ldap.authentication.java.naming.security.authentication=simple
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://IPDOMINIO:389
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.synchronization.java.naming.security.principal=USERADMINDOMINIO
ldap.synchronization.java.naming.security.credentials=PASSADMINDOMINIO
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=MIDOMINO.NET,dc=com
ldap.synchronization.userSearchBase=cn=users,dc=MIDOMINIO.NET,dc=com
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
Normalmente la cuenta de administrador, se lo dejamos a la cuenta local del Alfresco.
IMPORTATE: No copien y peguen, solo modifiquen las lineas necesarias. Realicen el Backup de los archivos antes de modificarlos.
11 comments on “Alfresco contra Zentyal ó AD”
Gracias por la ayuda, excelente, mi pregunta es: con cual parametro dejas al admin como local en alfresco?
" authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1:passthru,ldap1:ldap" En esta linea estamos usando NTLM (Windows), passthru1 (Autenticacion local) y LDAP. Eso significa que puedo usar o el admin local o el admin del dominio. Cualquier duda con gusto
Hola, copie lo de AD y me sale esto porque puede ser?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'globalAuthenticationFilter' defined in file [/opt/alfresco-4.0.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/passthru/ntlm-filter-context.xml]: Cannot resolve reference to bean 'AuthenticationComponent' while setting bean property 'authenticationComponent'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'AuthenticationComponent' defined in file [/opt/alfresco-4.0.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/passthru/passthru-authentication-context.xml]: Cannot resolve reference to bean 'authenticationComponent' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationComponent' defined in file [/opt/alfresco-4.0.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/passthru/passthru-authentication-context.xml]: Cannot resolve reference to bean 'passthruServers' while setting bean property 'passthruServers'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'passthruServers' defined in file [/opt/alfresco-4.0.d/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/passthru/passthru-authentication-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
y continua el mensaje…
Copiaste lo del AD? osea copiaste todas esas lineas un Copy/paste? si es asi restaura el backup (supongo que lo hiciste) del archivo, y solo configura las lineas de autenticacion que puse, si no las tienes solo copia esas lineas no edites las demas. Si algo cuentame como te fue
Si perfecto ya funciono, gracias ahora quiero sincronizar las cuentas, hay que activar en ldap-authentication.properties ? y activar algun cron mas?
Cuando hablas de sincronizar cuentas a que te refieres? Por que al momento que enlazas el Alfrewsco con el LDAP o con el AD las cuentas se van agregando a medida que las personas se van logueando en Alfresco.
Apesar de que puedo loguearme con usuarios del dominio sale este error un poco mas extenso pero al parecer por eso no sincroniza los usuarios
06:54:07,988 INFO [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Retrieving all groups from user registry 'ldap1'
06:54:07,990 ERROR [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Synchronization aborted due to error
org.alfresco.repo.security.authentication.AuthenticationException: 08070020 LDAP authentication failed.
Al parecer ahi un problema con la conexión y sincronizancion con el servidor de cuentas de usuarios, valida de nuevo la información de tu servidor en la configuración del Alfresco como el user admin, el pass, el dominio, el nombre, el DC, la IP….
Si pero quiero que se agreguen todas, hay forma o eso no se puede? ya se authentica y todo, el que se loguea crea la cuenta en alfresco, pero quisiera que todas esten disponibles una forma de importarlas, porque quiero darle permisos a ciertos espacios y no puedo esperar que se logueen y tampoco pedirles la clave a cada uno. Se puede hacer eso, traer los usuarios sin esperar que se logueen? gracias por las respuestas
Hasta aya no se, Yo autorizo a medida que van solicitando el acceso al sistema, solo tengo un sitio publico y el resto son privados. y Segun sea el usuario asi mismo le doy el permiso en el Sitio.
pero si quieres dale un vistazo a esta documentación, http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fsync-intro.html
Hola Frank. sobe este mismo tema, ya tengo al alferesco sincronizado con el AD.y lo que tengo es un sitio moderado. pero como busco a los usuarios para invitarlos al sitio?