Category Archives: Alfresco

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