Para aquellos que no lo sepan, Liferay es un portal de gestión de contenidos de código abierto escrito en Java. Se creó en 2000, en principio como solución para las organizaciones sin ánimo de lucro. Hoy en día Liferay tiene más de 60.000 descargas al mes.

Sus características más destacadas son:

  • Corre en la mayoría de los servidores de aplicaciones y contenedores de servlets, base de datos y sistemas operativos, con más de 700 combinaciones posibles.
  • Compatible con JSR-286
  • Disponibilidad “fuera de la caja” Out-of-the-box de más de 60 Portlets pre-construidos.
  • Construido dentro del Sistema de manejo de contenido (CMS) y Suite colaborativa.
  • Páginas personalizadas para todos los usuarios.
  • Benchmarked como uno de los portales seguros usando LogicLibrary’s Logiscan suite.

En este tutorial vamos a ver cómo podemos configurar nuestro servidor liferay con un sistema de autenticación SSO (en este caso utilizaremos CAS) y a su vez la autenticación se realizará contra un LDAP.

En primer lugar comenzaremos por configurar nuestro servidor Liferay para que se autentique contra un LDAP.

Otra de las opciones que Liferay nos proporciona, es que cuando configuramos un servidor LDAP con Liferay, podemos importar los diferentes usuarios que se encuentren en el LDAP al servidor Liferay. ¿Para qué? Esto es muy útil para que cuando los usuarios se identifiquen, el portal automáticamente obtenga los permisos otorgados en el portal, los cuales pueden ser diferente a los que tiene en el LDAP.

NOTA: como las pruebas las estamos realizando sobre entorno Windows, vamos a trabajar con OpenLDAP para Windows.

Una vez que tenemos instalados el OpenLDAP y el servidor de Liferay en nuestra máquina, vamos al panel de control de nuestro servidor Liferay.

En el panel de control, nos dirigimos a la sección Portal (en el menú de la izquierda) y seleccionamos la opción de Configuración. Ahora en el menú de la derecha debemos seleccionar la opción de Autenticación.

En la pantalla que estamos viendo, en la parte superior debemos seleccionar la opción de LDAP, lugar donde configuraremos todo.

liferaypost1

En primer lugar configuraremos la conexión con el servidor de autenticación, para ello pincharemos sobre el botón de añadir, lo cual nos mostrará una pantalla como la que sigue:

liferaypost2

2. Una vez tenemos configurada la conexión, configuraremos los datos de los usuarios:

liferaypost3

Una vez configurado, podemos probar pinchando sobre el botón “Probar la configuración de usuarios LDAP”, y si todo está configurado correctamente debería aparecer una pantalla con los usuarios del LDAP como la siguiente:

liferaypost4

3. Tras configurar los usuarios, nuestro siguiente paso es configurar los datos de grupos:

liferaypost5

De igual forma, podemos probar la configuración haciendo clic en el botón “Probar la configuración de grupos LDAP”, apareciéndonos una pantalla como la siguiente si todo está correctamente configurado.

liferaypost6

Una vez tenemos todo configurado, retrocedemos un paso, y marcamos la casilla de habilitado (como podemos ver en la siguiente imagen), y adicionalmente marcamos la casilla de habilitar importación para que los usuarios del servidor LDAP sean importados a nuestro Liferay.

liferaypost7

A partir de este momento, los usuarios existentes en el LDAP podrán autenticarse ante Liferay. Liferay importará los datos y los grupos desde LDAP.

Por último, pararemos nuestro servidor Liferay, editaremos nuestro fichero “portal-ext.properties” ubicado en:

../Servidor Liferay/TomcatX/webapps/ROOT/WEB-INF/clases/portal-ext.properties.

Para los usuarios que no tienen correo electrónico en el LDAP, al ser uno de los parámetros obligatorios para el registro de un usuario en Liferay, insertaremos las dos siguientes líneas:

  1. users.email.address.required=false
  2. users.email.address.auto.suffix=@no-emailaddress.com

Estas dos líneas, asignarán a los usuarios que no posean mail la cadena “id_de_usuario@no-emailaddress.com”.

También añadimos las siguientes líneas:

1.ldap.import.interval=2

2.ldap.import.method=group

3.ldap.import.create.role.per.group=true

La línea 1 determina que cada 2 minutos sincroniza con el LDAP, la línea 2, importa sólo los usuarios que estén asignados a un grupo en LDAP y la línea 3 cuando crea un grupo nuevo, se crea también un role con el mismo nombre.

Importante: El nombre de usuario y la dirección de correo pueden ser campos de identificación en Liferay, los cuales se obtienen del LDAP y en principio son modificables por el usuario, lo cual puede dar problemas.

Por ejemplo, un único usuario de LDAP que modifique su nombre de usuario en Liferay podría volver a identificarse con el nombre original y generarse un usuario duplicado, con dos nombres diferentes. Para evitar esto se deben añadir estas líneas al fichero ‘portal-ext.properties‘:

1.field.editable.com.liferay.portal.model.User.screenName=administrator,user-with-mx,user-without-mx

2.field.editable.com.liferay.portal.model.User.emailAddress=administrator,user-with-mx,user-without-mx

Uno de los grandes fuertes de Liferay es su versatilidad a la hora de integrarse con sistemas externos, como ha quedado patente en este artículo, siguiendo unos sencillos pasos se puede realizar una integración con LDAP.

La apuesta de SOLTEL IT SOFTWARE por Liferay se remonta a 2007 y actualmente es una de las tecnologías asentadas en nuestro stack tecnológico.