Archivo del autor: fegor

Subir documentos por FTP en Alfresco

En determinadas ocasiones necesitamos automatizar la subida de documentos a Alfresco desde algún filesystem. Para ello podemos usar los distintos protocolos de los que nos ofrece, si bien, en este caso, si es algo sencillo en intranet y no necesitamos para ello realizarlo mediante CIFS o WebDAV, podemos recurrir al siempre sencillo protocolo FTP.

Para además controlar si el o los documentos se han subido correctamente podemos usar un script y ayudarnos del comando «curl» que está para Linux, Solaris, Unix, Windows, etc.

Este es un ejemplo de script que controla la subida de un documento y que podéis adaptar a vuestras necesidades.

#!/bin/bash
FICHERO=prueba.txt
curl -u admin:admin -T $FICHERO ftp://localhost:1121/Alfresco/$FICHERO >/dev/null 2>&1
if [ $? -eq 0 ]; then
        echo «El fichero se ha subido correctamente.»
else
        echo «ERROR en la subida del fichero.»
fi

 

Compilar Alfresco Community en MacOS X


Instalar Eclipse:

Lo primero es instalar Eclipse de http://www.eclipse.org siguiendo el instalador para MacOS X.

Instalar Alfresco desde el instalador:

Lo segundo, como recomendación para copiar todas las utilidades que necesitamos sin necesidad de bajarselas de las respectivas webs, es instalar la versión de Alfresco con instalador que haya para MacOS X desde http://www.alfresco.com

Luego, copiamos el directorio tomcat que hay en el Alfresco instalado en la ubicación donde queremos dejar el resultado de la compilación, en mi caso en /Users/fegor/Documents/workspace/tomcat

Para la configuración podemos aprovechar para copiar un fichero de configuración de ejemplo que es desplegado en el primer arranque (por cierto, en la instalación se puede usar la base de datos por defecto que es Derby ya que la que usaremos posteriormente es MySQL)

cd /Users/fegor/Documents/workspace/tomcat
cp webapps/alfresco/WEB-INF/classes/alfresco-global.properties.sample shared/classes/alfresco-global.properties

Se modifica este fichero con los valores correspondientes:

dir.root=/Users/fegor/Documents/workspace/tomcat/alf_data
db.username=alfresco
db.password=alfresco
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost/alfresco

Y se añaden las líneas para localizar las diferentes herramientas necesarias (hay que verificar que los paths son los correctos)

ooo.exe=/Applications/OpenOffice.org.app
ooo.user=${dir.root}/oouser
img.root=/Users/fegor/Documents/workspace/tomcat/ImageMagick-6.5.9
swf.exe=/Users/fegor/Documents/workspace/tomcat/pdf2swf

Instalando OpenOffice:

Si se va a utilizar OpenOffice para más cosas que la conversión de documentos en Alfresco, lo mejor es instalarlo de forma estándar descargándolo de http://porting.openoffice.org/mac/

Instalando pdf2swf:

La forma que he visto más sencilla es instalar la versión full para MacOS X (por ejemplo la versión 3.1 SP2 tiene instalador para MacOS X) y luego copiar el ejecutable a nuestra compilación:

cp /Users/fegor/Alfresco/bin/pdf2swf /Users/fegor/Documents/workspace/tomcat

Instalando ImageMagick:

Para la instalación de ImageMagick se puede copiar también el directorio de la instalación full de Alfresco o bien descargarlo de http://www.imagemagick.org/script/binary-releases.php

En esta página existen dos formas de instalarlo, una mediante MacPorts (http://www.macports.org/) y otra bajándose directamente el paquete en tar.gz (http://www.imagemagick.org/download/binaries/ImageMagick-x86_64-apple-darwin10.2.0.tar.gz). He preferido bajar el paquete, descomprimirlo y ponerlo directamente dentro de la instalación de tomcat (Alfresco) ya que solo va a usarse para esto.

Por tanto:

tar xvzf ImageMagick-x86_64-apple-darwin10.2.0.tar.gz
mv ImageMagick-6.5.9/ /Users/fegor/Documents/workspace/tomcat/

Instalando MySQL para Mac:

Se puede descargar de la propia http://www.mysql.com y usar las instrucciones de instalación siguientes: http://dev.mysql.com/doc/refman/5.0/es/mac-os-x-installation.html

Una vez instalada y arrancada hay que crear la base de datos alfesco con usuario alfresco y password alfresco.

mysqladmin -u root create alfresco
mysql -u root -e «grant all on alfresco.* to ‘alfresco’@’localhost.localdomain’ identified by ‘alfresco’ with grant option;»
mysql -u root -e «grant all on alfresco.* to ‘alfresco’@’localhost’ identified by ‘alfresco’ with grant option;»

Bajar los fuentes de Alfresco:

Se puede seguir el siguiente enlace en caso de problemas, http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment y en concreto para eclipse el siguiente http://wiki.alfresco.com/wiki/Alfresco_on_Eclipse

Instalar Sysdeo para usar (arrancar y parar) los servidores de aplicaciones tomcat, desde http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV321.zip.

Solo hay que descomprimirlo dentro del directorio plugins, en mi caso en /Applications/eclipse/plugins

Ejecutar eclipse y configurar en Eclipse -> Preferences -> Tomcat el lugar donde está el tomcat, la JVM y añadir los siguientes parámetros a la JVM (JVM Settings):

-server
-Xss256k
-Xms256m
-Xmx512m
-XX:NewSize=128M
-XX:MaxPermSize=128M

Y en Classpath: hay que introducir el camino a las classes de tomcat:

/Users/fegor/Documents/workspace/tomcat/shared/classes

Ahora configuramos Ant desde Eclipse -> Preferencias -> Ant -> Runtime -> Properties

Y añadir las siguientes propiedades:

env.TOMCAT_HOME = /Users/fegor/Documents/workspace/tomcat
env.APP_TOMCAT_HOME = /Users/fegor/Documents/workspace/tomcat
env.VIRTUAL_TOMCAT_HOME = /Users/fegor/Documents/workspace/tomcat/virtual-tomcat

Instalar Subclipse:

En nuestro eclipse: Help -> Install new software… (botón Add)

Name: Subclipse 1.6.x (Eclipse 3.2+)
Location: http://subclipse.tigris.org/update_1.6.x

Y proceder a marcar las casillas e instalar (botón Next…).

Configurar el proyecto de Alfresco en SVN:

1) Ir a File -> New -> Project
2) Seleccionar el asistente SVN y «Checkout Projects with Subversion»
3) En «Create a new repository location»
4) Seleccionar la URL: «svn://svn.alfresco.com» (*)
5) Por último la carpeta Alfresco y pulsar Finish.

Importar el proyecto Alfresco siguiendo los siguientes pasos:

1) File -> Import
2) General -> Existing Projects Into Workspace -> Next
3) Seleccionar HEADrootproyecto
4) Finish

Crear el proyecto Ant:

1) Seleccionar New -> Project. Bajo «General» elegir «Project» y en el nombre poner «ant»
2) Pulsar botón derecho del ratón en el proyecto y seleccionar New -> File
3) Cuando aparezca el nuevo diálogo, pulsar en el botón de Advanced y seleccionar «Link to file in the file system»
4) Ir al fichero build.xml localizado en el directorio HEADroot
5) Para construir el proyecto, ponerse encima de Build.xml con el botón derecho del ratón y seleccionar Run As… -> Ant Build

Nota: Si se reciben errores en la compilación, hay que elegir java-6-sun en lugar de java-6-opensdk en Preferences -> Java -> Installed JREs.

…y eso es todo. Para muestra «un botón», digo unas imágenes 😉

Resultado de la compilación:


Y la versión resultante:

(*) Me confundí con la URL, la siguiente funciona correctamente: http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco

Crear una acción para enviar documentos a un ContentStore distinto

Tras la conversación con Toni (blyx) sobre el aspecto storeSelector en Alfresco ECM 3.2 y las distintas posibilidades que podemos usar para automatizar el movimiento de documentos. Se me ocurre una que puede ser crear una acción para que mueva determinados documentos a, por ejemplo, una NAS, pero de forma interactiva.

Lo primero es configurar el nuevo «storeNAS» donde estará montada la NAS:

Fichero: storeNAS-content-store-selector-context.xml (siempre dentro de alfresco/extension)



<?xml version=’1.0′ encoding=’UTF-8′?>

<!DOCTYPE beans PUBLIC ‘-//SPRING//DTD BEAN//EN’ ‘http:// www.springframework.org/dtd/spring-beans.dtd’>

<!– Define the new file stores —>

<beans>

<bean id=»fileContentStoreNAS» class=»org.alfresco.repo.content.filestore.FileContentStore»>

<constructor-arg>

<value>${dir.root}/storeNAS</value>

</constructor-arg>

</bean>

<!– Declare the mapping between store names and store instances —>

<bean id=»storeSelectorContentStore» parent=»storeSelectorContentStoreBase»>

<property name=»defaultStoreName»>

<value>default</value>

</property>

<property name=»storesByName»>

<map>

<entry key=»default»>

<ref bean=»fileContentStore» />

</entry>

<entry key=»storeNAS»>

<ref bean=»fileContentStoreNAS» />

</entry>

</map>

</property>

</bean>

<!– Point the ContentService to the ‘selector’ store —>

<bean id=»contentService» parent=»baseContentService»>

<property name=»store»>

<ref bean=»storeSelectorContentStore» />

</property>

</bean>

<!– Add the other stores to the list of stores for cleaning —>

<bean id=»eagerContentStoreCleaner» class=»org.alfresco.repo.content.cleanup.EagerContentStoreCleaner» init-method=»init»>

<property name=»eagerOrphanCleanup» >

<value>${system.content.eagerOrphanCleanup}</value>

</property>

<property name=»stores» >

<list>

<ref bean=»fileContentStore» />

<ref bean=»fileContentStoreNAS» />

</list>

</property>

<property name=»listeners» >

<ref bean=»deletedContentBackupListeners» />

</property>

</bean>

</beans>

Ahora necesitamos configurar nuestra acción, eso lo realizamos en el fichero web-client-config-custom.xml y además de la acción configuramos también el aspecto:

Fichero: web-client-config-custom.xml



<config evaluator=»aspect-name» condition=»cm:storeSelector»>

<property-sheet>

<show-property name=»cm:storeName» />

</property-sheet>

</config>



<config evaluator=»string-compare» condition=»Action Wizards»>

<aspects>

<aspect name=»cm:storeSelector»/>

</aspects>

</config>

<config>

<actions>

<!– Launch Add Aspect Dialog —>

<action id=»add_store»>

<label>Add Store</label>

<image>/images/icons/add.gif</image>

<action>dialog:addStore</action>

</action>

<!– Add action to more actions menu for each space —>

<action-group id=»space_browse_menu»>

<action idref=»add_store» />

</action-group>

</actions>

</config>

Para crear nuestra propia acción asignamos al mismo fichero web-client-config-custom.xml la acción con la llamada al script:

<config>

<actions>

<action id=»sendStoreNAS»>

<label>Enviar a NAS</label>

<image>/images/icons/new_edition_icon.gif</image>

<script>/Company Home/Data Dictionary/Scripts/ContentStoreNAS.js</script>

<params>

<param name=»id»>#{actionContext.id}</param>

</params>

</action>

<action-group id=»document_browse_menu»>

<action idref=»sendStoreNAS» />

</action-group>

</actions>

</config>

Y por último el código en jscript que subiremos a Empresa/Diccionario de datos/Scripts:

Fichero: ContentStoreNAS.js

var document = search.findNode( «workspace://SpacesStore/» + args[«id»]);

document.addAspect(«cm:storeSelector»);

document.properties[«cm:storeName»] = «storeNAS»;

document.save();

var ret = «<html>» +

«<title></title>» +

«<body>» +

«<script>history.back();</script>» +

«</body>» +

«</html>«;

ret;

Ahora para cada documento podemos enviarlo al ContentStore desde el menú emergente de más acciones.



Todavía queda alguna forma más para tratar los documentos con distintos almacenes, según las necesidades y requisitos, todo es cuestión de ponerse…

Usando WebDrive como cliente WebDAV con Alfresco

De muchos es sabido que no todos los protocolos se comportan igual ante servidores que ofertan sus servicios sobre clientes heterogéneos. Es el caso del cliente de Windows para WebDAV y sobre todo cuando se accede a servidores de WebDAV como el ofrecido por Alfresco ECM.

Uno de los problemas de crear un acceso vía WebDAV desde Windows XP a Alfresco ECM 3.2 es que, por ejemplo, cuando se intenta abrir un documento en formato PDF desde el mismo recurso compartido y el lector por defecto es el Acrobat Reader, se produce un error.

… creamos el acceso desde el cliente WebDAV de Windows:

… abrimos directamente el documento PDF… ¡error!


Parece ser que el problema puede ser de Alfresco, del cliente WebDAV de Windows o del propio Acrobat Reader… bien, para descartar que sean el primero y el tercero, lo mejor es buscar un programa de terceros que haga de cliente WebDAV y probar sobre este. Para ello he descargado el programa WebDrive (http://www.webdrive.com/) que permite crear unidades y conectar por WebDAV, sFTP, FTP, etc.

Una vez descargado de la web (la versión trial/free) e instalado (siguiente, siguiente, etc.) se procede a crear una unidad con los datos de conexión con el servicio WebDAV de Alfresco:

… volvemos a probar abrir el documento PDF desde este nuevo recurso y… ¡voilá!


A priori, parece que este programa se comporta mejor con servidores WebDAV, al menos con el ofrecido por Alfresco ECM.

Nota: He probado también con tildes y eñes y no ha dado error al acceder.

Personalizar variables de arranque de Java en Apache-Tomcat

En muchas ocasiones utilizamos instancias de Apache-Tomcat en las que utilizamos las variables JAVA_OPTS con valores similares. Para poder configurar esta parte de la instalación podemos usar un fichero que generalmente no viene creado dentro del propio Apache-Tomcat pero que, si es encontrado se usa, llamado setenv.sh (sistemas unix) o setenv.bat (sistemas windows). De esta forma podemos pasar este fichero entre nuestras distintas instalaciones con unas básicas modificaciones.

El fichero que uso actualmente para mis instalaciones de Alfresco bajo Apache-Tomcat contiene las variables necesarias para optimizar el funcionamiento de la JVM de Sun.

Aquí está el contenido de dicho fichero con sus respectivos comentarios:

# Entorno de ejecución
# 9/06/2009 (Fernando González)

# Variables
LD_LIBRARY_PATH=/usr/local/apr/lib
JAVA_HOME=»/opt/java64/jdk1.6.0_14″
JRE_HOME=»${JAVA_HOME}/jre»
CATALINA_HOME=»/opt/alfresco/tomcat5525alfresco320″
CATALINA_BASE=»${CATALINA_HOME}»
GC_LOG=»${CATALINA_HOME}/logs/gc.log»
CATALINA_TMPDIR=»${CATALINA_HOME}/temp»
ALFRESCO_HOME=»${CATALINA_HOME}»

JAVA_OPTS=»»
JAVA_OPTS=»-Djava.library.path=/usr/local/apr/lib»

# Server Hotspot VM
JAVA_OPTS=»${JAVA_OPTS} -server»

# Modelo de datos de x bits -d32/-d64
JAVA_OPTS=»${JAVA_OPTS} -d64″

# Heap Size
JAVA_OPTS=»$JAVA_OPTS -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31″
JAVA_OPTS=»${JAVA_OPTS} -Xms512m -Xmx640m»
JAVA_OPTS=»${JAVA_OPTS} -Xss128k»

# Perm Size – Total permanent generation
JAVA_OPTS=»${JAVA_OPTS} -XX:PermSize=128m -XX:MaxPermSize=128m»

# Young Generation
JAVA_OPTS=»${JAVA_OPTS} -XX:+UseParNewGC»

# Old Generation – Low Pause Collector (default: Mark-Compact Collector)
JAVA_OPTS=»${JAVA_OPTS} -XX:+UseConcMarkSweepGC»

# Permanent Generation – Compact Mark Sweeping Collector
JAVA_OPTS=»${JAVA_OPTS} -XX:+CMSClassUnloadingEnabled»

# Intervalo en milisegundos para GC
JAVA_OPTS=»${JAVA_OPTS} -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.rmi.dgc.client.gcInterval=3600000″

# Codificación
JAVA_OPTS=»${JAVA_OPTS} -Dfile.encoding=UTF-8″

# Log para acciones de GC
CATALINA_OPTS=»${CATALINA_OPTS} -Xloggc:${GC_LOG}»

# Sincronización basada en hilo LWP
CATALINA_OPTS=»${CATALINA_OPTS} -Xconcurrentio»

# Comprobaciones adicionales
CATALINA_OPTS=»${CATALINA_OPTS} -Xcheck:jni»

# Monitorización JMX
CATALINA_OPTS=»${CATALINA_OPTS} -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.access»

# Parámetros para Alfresco desde java
JAVA_OPTS=»${JAVA_OPTS} -Dalfresco.home=${ALFRESCO_HOME}»

Plugin para Pidgin «now listening» en Spotify

He visto un plugin para mi pidgin que presenta la canción que estás escuchando actualmente en spotify (instalado en wine, por supuesto).

Se encuentra aquí: http://developer.pidgin.im/wiki/ThirdPartyPlugins

Se llama «pilt spotify» y según su README es simplemente compilarlo con make, aunque me han salido unos errores en mi Ubuntu 9.10. Estos errores han sido simplemente falta de librerías principalmente así que se instalan:

sudo aptitude install glibc-2.10-1 sudo aptitude install libglib2.0-dev sudo aptitude install libpurple-dev sudo aptitude install xorg-dev

Pero hecho esto, se compila todo menos el plugin, ¿por qué?, bueno, parece ser que la versión de la librería libpurple-dev es distinta de la que depende libpurple0 (en mi caso la 2.6.2 en lugar de ser la 2.6.3 que es la que necesito).

Así pues, en http://archive.getdeb.net/getdeb/ubuntu/jaunty/li/ se baja la buena libpurple-dev_2.6.3-1~getdeb1_all.deb y se instala.

Con «aptitude show libpurple-dev» se verifica que ahora la versión es la buena y se vuelve a compilar con «make».

Por último se copia spotify_playing.so en el «home» del usuario, dentro de .purple/plugins y listo, solo queda arrancar Pidgin y activar el complemento.

Recomiendo seguir el README y en caso de problemas sobre librerías continuar a partir de ahí con este artículo.

Autenticación NTLM (SSO) en share de Alfresco 3.1

Para la autenticación por NTLM de la nueva interface «share» de Alfresco hay que seguir los siguientes pasos:

A) Modificar webapps/share/WEB-INF/web.xml para activar las líneas y filtros referentes a la autenticación NTLM (de igual forma que en mi post anterior Autenticación NTLM en Alfresco)

B) Copiar webapps/share/WEB-INF/classes/alfresco/webscript-framework-config.xml como shared/classes/alfresco/web-extension/webscript-framework-config-custom.xml

C) Añadir lo siguiente (desde el hasta ):



[…]

alfresco
Alfresco – user access
Access to Alfresco Repository WebScripts that require user authentication
alfresco
http://localhost:8080/alfresco/wcs
user
true

[…]

Reiniciar el servidor y listo. Hay que tener en cuenta siempre las recomendaciones y configuraciones de los posts anteriores en cuanto a navegadores y sistemas.

Para más información se puede ir a la wiki de Alfresco.

Single Sign On (SSO) en Alfresco con NTLM (Windows)

En el artículo anterior se vió la forma de configurar la autenticación NTLM (Autenticación NTLM en Alfresco) tanto vía WebClient (web) como vía CIFS (unidades compartidas de Windows). De hecho se ha visto una configuración denominada «passthru» en la que los usuarios se buscan directamente en la SAM de Windows, ya sea 2000/2003/… Server, o el mismo Windows XP que también contiene la suya.

Bien, pero, si el cliente es desde windows y nos hemos identificado con un usuario que ya existe en Alfresco, lo ideal es que no vuelva a preguntar por esa autenticación y envíe los datos de usuario/password (o cadena MD4) de nuevo, si no que el mismo Internet Explorer los envíe de forma automática y por tanto se esté autenticado. Esto es lo que se conoce como Single Sign On (SSO).

Alfresco permite este sistema de autenticación «automatizada» o de «autentícate una vez solamente» en determinadas configuraciones. Una de ellas es a través de NTLM siempre que el sistema utilice NTLMv1. En el caso que nos ocupa, con una instalación de Alfresco Enterprise 3.1 SP1 en una máquina Linux Ubuntu 9.10 y una base de usuarios en Windows XP, accediendo desde el propio Windows XP autenticados previamente con una cuenta que existe en Alfresco.

Los ficheros a configurar son los mismos que anteriormente, o sea, web.xml y ntlm-authentication-context.xml

Muy bien, ya están configurados, pero entonces, ¿por qué se me solicita siempre usuario y contraseña desde Internet Explorer si estoy autenticado con un usuario y contraseña que ya están en Alfresco)

La respuesta está en base a dos configuraciones que hay que revisar:

1. Uso de NTLMv1 desde Windows. Para ello hay que realizar los siguientes pasos en Windows:

a) Ir a «Panel de control->Herramientas administrativas->Política de seguridad local»
b) Seleccionar la carpeta «Políticas locales»
c) Ir a «Opciones de seguridad»
d) Seleccionar «Network Security : nivel de autenticación del controlador LAN»
e) Comprobar (o en su caso establecerla) que está en la opción de «Enviar LM & NTLM – usar seguridad de sesión NTLMv2 si se negocia»

2. Acceso desde Internet Explorer. El navegador seguirá visualizando la ventana de autenticación porque, evidentemente, no se fía de realizar un acceso de forma automática sin el consentimiento del usuario. Para ello en Internet Explorer hay que seguir los siguientes pasos:

a) Ir a «Herramientas->Opciones de Internet…->Seguridad»
b) Seleccionar «Sitios de confianza»
c) Pulsar en el botón «Sitios..»
d) Introducir (Agregar) la URL del sitio al que se accede (del servidor donde está Alfresco), p.e. http://172.26.0.6:8080/alfresco (desactivar «Requerir comprobación del servidor (https)…» si no es una URL segura)

Con esto ya obtenemos SSO desde Windows con Internet Explorer desde la versión 6.

Para comprobar que funciona solo hay que activar en log4j.xml la depuración de NTLM:

log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug

Cuando autentique correctamente dará un resultado como el que sigue:

11:50:37,178 DEBUG [app.servlet.NTLMAuthenticationFilter] New NTLM auth request from 172.26.0.13 (172.26.0.13:3072) SID:A28CADB932CA4EFB87283284B9C29990
11:50:37,238 DEBUG [app.servlet.NTLMAuthenticationFilter] Received type1 [Type1:0xa208b207,Domain:WRKGRP,Wks:XPPRO]
11:50:37,239 DEBUG [app.servlet.NTLMAuthenticationFilter] Client domain WRKGRP
11:50:37,429 DEBUG [app.servlet.NTLMAuthenticationFilter] Sending NTLM type2 to client – [Type2:0x80000203,Target:PT043A,Ch:6ce8db32e9dccc27]
11:50:37,459 DEBUG [app.servlet.NTLMAuthenticationFilter] Received type3 [Type3:,LM:947bde8ff03d7b972817a6dc0232eddeba5c294ad9a337a2,NTLM:4a532d7bbd01f1ef2300a8fc91b54fbcad5e11db6a94f284,Dom:XPPRO,User:fegor,Wks:XPPRO]
11:50:37,555 User:fegor DEBUG [app.servlet.NTLMAuthenticationFilter] Updated cached NTLM details
11:50:37,556 User:fegor DEBUG [app.servlet.NTLMAuthenticationFilter] User logged on via NTLM, [fegor,Wks:XPPRO,Dom:XPPRO,AuthSrv:PT043A,Fri Dec 18 11:50:37 GMT+01:00 2009]

«Rizando el rizo»…

Bueno, pero , ¿que pasa con Fire Fox?, este navegador por defecto no es capaz de autenticar vía NTLM…

Por defecto no, pero podemos «forzarlo», ¿como?, solo hay que seguir los siguientes pasos:

a) Poner en la URL de Fire Fox «about:config» y aceptar la entrada.
b) Buscar la cadena «network.automatic-ntlm-auth.trusted-uris» e introducir como valor la URL de Alfresco. P.e. http://172.26.0.6:8080/alfresco

Con esta configuración podremos tener acceso SSO en Fire Fox 3 desde un cliente Windows.

Esta configuración (al igual que la del artículo anterior) han sido probadas tanto en la versión 2.1 (SP7) como en la 3.1 (SP1) de Alfresco Enterprise.

Autenticación NTLM en Alfresco con Active Directory

En muchas ocasiones, aunque el servidor de autenticación sea un Windows 2000 Server, Windows 2003 Server o posterior y sus usuarios estén en el Active Directory no es necesario tener que configurar Alfresco para que autentique como tal vía LDAP/Active Directory.

Windows 2000 y superiores utilizan la autenticación mixta vía LDAP (Active Directory) y TLM v2 y por tanto podemos configurar Alfresco tocando solamente 3 ficheros, que serán:

web.xml
ntlm-authentication-context.xml
file-servers-custom.xml

En Alfresco, este tipo de autenticación donde no solo se usa el protocolo «desafío/respuesta» NTLM sino que además se usa contra una base de datos de usuarios de Windows, para la identificación de cada persona, se le denomina «NTLM passthru».

Se usa ${tomcat} como identificador del punto de comienzo del servidor de aplicaciones que en este caso es Apache-Tomcat.

Primero hay que activar los filtros necesarios para la autenticación vía web en ${tomcat}/webapps/alfresco/WEB-INF/web.xmldescomentando las líneas siguientes:

org.alfresco.web.app.servlet.NTLMAuthenticationFilter

org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter


Authentication
Filter
/navigate/*


Authentication
Filter
/command/*


Authentication
Filter
/download/*


Authentication
Filter
/template/*


Authentication
Filter
/n/*


Authentication
Filter
/c/*


Authentication
Filter
/t/*


Authentication
Filter
/d/*


Authentication
Filter
/ajax/*


Authentication
Filter
/wcs/*


Authentication
Filter
/wcservice/*

Lo mejor es buscar la cadena «NTLM» y a partir de ahí descomentar estas líneas.

El siguiente fichero a configurar es ${tomcat}/share/classes/alfresco/extension/ntlm-authentication-context.xml donde solo hay que establecer el servidor o servidores Windows que contienen el Active Directory.

En este caso, por ejemplo:


MIDOMINIOserv001, serv001


Y por último el fichero ${tomcat}/share/classes/alfresco/extension/file-servers-custom.xml que es el que nos permitirá acceder a los recursos CIFS (SMB) desde Windows o desde Linux. Aquí se configura para usar «passthru» así como los servidores necesarios.

Por ejemplo:



MIDOMINIOserv001, serv001



Con esto ya estaría configurado nuestro sistema para autenticación NTLM y acceso a los recursos vía CIFS/SMB. Bastará con poner en la dirección del navegador de ficheros la dirección del host o servidor Alfresco:

En Windows como \serv001

En Linux, generalmente como smb://srv001

Observaciones: Hay que tener en cuenta que si es un entorno Linux los puertos usados
para los recursos CIFS/SMB (puertos 137, 138, 139 y 445) solo pueden abrirse por el usuario root y no por un usuario sin privilegios de administración. En este último caso habría que utilizar puertos por encima del 1024 reasignándose dentro de la configuración (en el
propio fichero file-servers-custom.xml) y utilizando un sistema de «forwading» o «NAT» con un router.

Usar WebDAV en Alfresco bajo Linux (Una solución para editar scripts con Eclipse)

Cuando se quieren editar Scripts y WebScripts con Eclipse en Windows, se pueden realizar utilizando para ello los llamados «File Servers» que Alfresco pone a nuestra disposición bajo los nombres NombreMaquinaA o NombreMaquina_A (según la versión de Alfresco) como recursos CIFS.

En Linux también es posible mediante un cliente SMB (SAMBA) siempre y cuando tengamos acceso a los puertos necesarios (445 para TCP/IP y 137 al 139 para NetBIOS). Estos puertos quedan por debajo del 1024 por lo que si levantamos el servidor de aplicaciones con un usuario que no es root; o realizamos un «forwarding» entre los puertos por encima del 1024 a los que son en realidad, para lo que se necesitarían dos tarjetas de red, o utilizamos otro protocolo que nos permita acceder de forma parecida o similar.

Otro protocolo usado por Alfresco junto con CIFS y FTP es WebDAV. Este último puede utilizarse en Linux directamente, poniendo en el sistema de ventanas la dirección correcta. Por ejemplo, en el «Nautilus» de Ubuntu en la barra de Lugar (dirección) podemos poner:

dav://servidor:puerto/contexto_o_alias

Concretamente si tenémos instalado un Alfresco en nuestro propio ordenador podríamos acceder a este como:

dav://localhost:8080/alfresco/webdav

Pero, ¿y si queremos montar un directorio WebDAV directamente con el comando mount?, de esta forma podríamos acceder desde cualquier aplicación o editor a ese directorio (recurso), podríamos montarlo automáticamente desde /etc/fstab, etc.

En mi caso para poder editar directamente los ficheros de JavaScript y WebScripts en Alfresco utilizo este último sistema. Para ello me ayudo de mount.davfs2 concretamente.

Primero hay que instalar davfs2 si aún no está instalado usando aptitude o apt-get:

sudo aptitude install davfs2

Una vez instalado ya podemos montar unidades directamente como root (antes vamos a crear un directorio como punto de montaje), por ejemplo:

mkdir /home/fegor/WEBDAVscripts
sudo mount.davfs ‘http://localhost:8080/alfresco/webdav’ /home/fegor/WEBDAVscripts/

(Nos pedirá el usuario y la contraseña)

Ahora ya accedemos a Alfresco vía WebDAV, el problema es que los permisos de creación de este punto de montaje son del root.

Bien, si deseamos montar nosotros mismos (como usuarios) las unidades WebDAV, haremos lo siguiente:

sudo dpkg-reconfigure davfs2

Debemos contestar que Si (Yes) para que se nos permita montar las unidades como usuarios. Además debemos dar de alta nuestro usuario en el grupo davfs2 como:

sudo adduser fegor davfs2

Seguidamente introducimos la cadena necesaria para el montaje en /etc/fstab, por ejemplo:

http://localhost:8080/alfresco/webdav /home/fgonzalez/workspace/WEBDAValfresco davfs user,rw,nolocks,noauto 0 0

El parámetro por defecto para bloqueos viene fijado pero da problemas con Alfresco así que las desactivo (parámetro nolocks).

Ahora a montar la unidad con nuestro própio usario:

mount /home/fegor/WEBDAValfresco

Y ya no tendremos problemas de permisos de escritura, etc.

Para más información sobre davfs2 podéis visitar las siguientes URLs:

http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/Setting_up_davfs2_with_the_Ubuntu_package
http://sysblogd.wordpress.com/2007/09/09/ubuntu-mounting-remote-filesystem-using-davfs2-fuse/
http://blogdrake.net/node/13162