La web principal de la Universidad de Alcalá, uah.es, está construida sobre Liferay Portal, que actúa simultáneamente como portal empresarial, plataforma de experiencia digital y gestor de contenidos corporativo. Liferay centraliza la presencia digital institucional de la UAH: agrupa en una única plataforma la web pública, los portales de servicios para alumnos, PDI y PAS, y los canales de comunicación interna. La elección de Liferay en universidades responde a su capacidad para gestionar una audiencia heterogénea —con roles, permisos y vistas completamente diferenciadas según el tipo de usuario— y a su integración nativa con directorios corporativos como LDAP y Active Directory, lo que permite una experiencia de acceso unificada.
Liferay Portal es una plataforma de código abierto desarrollada en Java que combina las capacidades de un portal empresarial (Enterprise Portal) con las de una plataforma de experiencia digital (Digital Experience Platform, DXP). Nacida a principios de los 2000, Liferay evolucionó desde un portal web básico hasta convertirse en una solución integral para la creación de experiencias digitales personalizadas dirigidas a diferentes audiencias (clientes, empleados, ciudadanos, estudiantes).
En el contexto universitario, Liferay sirve para:
El concepto de DXP supera al de simple CMS (Content Management System). Mientras un CMS gestiona y publica contenidos, un DXP añade:
Liferay es una aplicación Java EE (Jakarta EE) que se despliega sobre un servidor de aplicaciones Java. La arquitectura se articula en varias capas:
[ Navegador / Dispositivo ]
↓
[ Servidor Web: Apache HTTP Server / Nginx ]
↓ (proxy inverso)
[ Servidor de Aplicaciones: Tomcat / JBoss WildFly ]
↓
[ Motor Liferay Portal / DXP ]
↓
[ Base de datos: MySQL / PostgreSQL / Oracle / SQL Server ]
[ Motor de búsqueda: Elasticsearch ]
[ Almacenamiento de documentos: Sistema de ficheros / S3 / Documentum ]
[ Directorio corporativo: LDAP / Active Directory ]
Liferay necesita un servidor de aplicaciones Java EE (Java EE Application Server) donde desplegarse. Los servidores soportados son:
En la mayoría de despliegues universitarios, incluida la UAH, se utiliza Tomcat por su simplicidad de configuración y mantenimiento.
Liferay requiere una base de datos relacional para almacenar toda su configuración, contenidos, usuarios, roles y permisos. Las bases de datos soportadas incluyen MySQL/MariaDB, PostgreSQL, Oracle Database y Microsoft SQL Server. La configuración de la conexión se establece mediante un datasource configurado en el servidor de aplicaciones o mediante el fichero portal-ext.properties.
Desde Liferay 7.x, Elasticsearch es el motor de búsqueda predeterminado y obligatorio para entornos de producción. Liferay indexa en Elasticsearch todos sus contenidos, usuarios y objetos para proporcionar búsqueda de texto completo de alta velocidad. En versiones anteriores se utilizaba Apache Lucene embebido, pero la arquitectura moderna desacopla el motor de búsqueda del servidor principal.
Liferay permite crear múltiples instancias virtuales del portal dentro de una misma instalación, cada una con su propio dominio, conjunto de usuarios, configuración y contenidos. Esto es útil para gestionar, desde una sola infraestructura, la web pública (uah.es), el portal del estudiante o la intranet de cada campus.
Un Site es la unidad organizativa fundamental de Liferay. Cada site es un portal independiente dentro de la instancia, con sus propias páginas, contenidos, usuarios miembros y configuración. Los tipos de site son:
Cada site puede tener páginas públicas (accesibles sin autenticación) y páginas privadas (solo para miembros del site). En la UAH, la web pública uah.es sería el site principal con páginas públicas, mientras que el portal del estudiante estaría en un site con páginas privadas.
Las páginas son las pantallas que componen cada site. Liferay distingue entre:
Las páginas se organizan jerárquicamente formando la estructura de navegación del site. Pueden heredar la configuración de páginas padre.
Un portlet es un componente de interfaz de usuario Java que se despliega como una aplicación independiente dentro de una página de Liferay. Cada portlet es una aplicación web auto-contenida que puede tener su propio estado, configuración y lógica. El estándar que regula los portlets en Java EE es JSR-286 (Portlet 2.0), aunque Liferay 7.x también soporta el estándar más moderno JSR-362 (Portlet 3.0).
Liferay incluye portlets propios para todas sus funcionalidades (portlets core): gestión de usuarios, foros, blogs, wiki, repositorio de documentos, calendario, etc. Las aplicaciones de terceros o desarrolladas internamente también se despliegan como portlets.
En la terminología moderna de Liferay DXP, el término widget se usa para referirse a los portlets cuando se colocan en una Widget Page, manteniendo la compatibilidad con el concepto original de portlet.
JSR-286 (Java Specification Request 286) define la API estándar de portlets en Java EE. Establece el ciclo de vida de un portlet (init, render, processAction, serveResource, destroy), los modos de portlet (VIEW, EDIT, HELP) y los estados de ventana (NORMAL, MAXIMIZED, MINIMIZED). La adherencia a este estándar garantiza la portabilidad de los portlets entre diferentes portales Java que implementen la especificación. Es importante conocerlo porque cualquier pregunta sobre la arquitectura técnica de Liferay involucra este estándar.
Los fragmentos son los bloques de construcción de las Content Pages. Son porciones de HTML, CSS y JavaScript editables que el diseñador de páginas arrastra y combina en el editor visual. Pueden ser simples (un banner, un título, una imagen con texto) o compuestos. Liferay incluye una biblioteca de fragmentos prediseñados y permite crear fragmentos personalizados.
El aspecto visual global de un site se controla mediante temas (Themes), que son proyectos Java/Maven/Gradle que empaquetan el HTML base (plantillas Freemarker), CSS, JavaScript e imágenes que definen la identidad visual del portal. El tema de la UAH implementa la imagen corporativa de la universidad. Los layouts definen la distribución de columnas de las Widget Pages.
El Web Content es el módulo principal de gestión de contenidos de Liferay. Permite crear y publicar contenidos estructurados basados en estructuras y plantillas:
Este modelo estructura/plantilla/artículo permite reutilizar el mismo formato de contenido (una noticia, un evento, una persona de contacto) en múltiples lugares del portal con presentaciones diferentes.
Los artículos de contenido pueden someterse a un flujo de aprobación (workflow) antes de publicarse. Liferay incluye un motor de workflow configurable que permite definir procesos de revisión multinivel: el redactor crea el contenido, el editor lo revisa, el responsable de comunicación lo aprueba y finalmente se publica.
Documents & Media es el repositorio de activos digitales de Liferay. Almacena documentos, imágenes, vídeos y cualquier tipo de fichero binario, organizados en carpetas y con metadatos personalizables. Características relevantes:
El Asset Publisher es uno de los portlets más potentes de Liferay. Muestra dinámicamente colecciones de contenidos (artículos web, documentos, entradas de blog, eventos) filtrados por categorías, etiquetas, tipo de contenido, autor, fechas o cualquier combinación de criterios. Es el componente que permite crear páginas dinámicas donde el contenido se actualiza automáticamente sin intervención manual.
Liferay dispone de un sistema de taxonomía para clasificar y relacionar contenidos:
Liferay implementa un modelo de permisos granular basado en roles que permite controlar con precisión qué acciones puede realizar cada usuario sobre cada recurso del portal.
Administrator (acceso total), Power User, User (rol base de cualquier usuario registrado).Site Administrator, Site Member, Site Content Reviewer. Un usuario puede ser Site Administrator en el portal de su facultad y User en el resto.Las organizaciones son estructuras jerárquicas que modelan la estructura real de la institución (universidad → campus → facultad → departamento). Permiten agrupar usuarios y asignarles roles en el contexto de su unidad organizativa, facilitando la gestión delegada de usuarios en organizaciones grandes como la UAH.
Los permisos en Liferay siguen el principio de denegación por defecto: todo lo que no está explícitamente permitido está prohibido. Los permisos se asignan a roles (nunca directamente a usuarios), y se definen a nivel de tipo de recurso (ej. "puede crear artículos web") o de recurso concreto (ej. "puede editar este documento específico"). La herencia de permisos sigue la jerarquía: instancia → organización → site → página → portlet → recurso.
En una universidad como la UAH, los usuarios (alumnos, PDI, PAS) ya existen en el directorio corporativo (LDAP o Active Directory). Recrear y mantener manualmente esos usuarios en Liferay sería inviable. La integración con LDAP permite que Liferay utilice el directorio corporativo como fuente única de verdad para la identidad de los usuarios.
La integración LDAP se configura desde el panel de control de Liferay (Control Panel → Instance Settings → LDAP) y permite:
cn, sn, mail, uid, memberOf, etc.) se mapean a los campos del perfil de usuario de Liferay.Liferay soporta varios mecanismos de autenticación única (SSO) que permiten que el usuario se autentique una sola vez y acceda a todos los sistemas integrados sin volver a introducir sus credenciales:
En el contexto de la UAH, la integración con el directorio corporativo y el sistema de SSO institucional es esencial para que alumnos y personal accedan al portal con sus credenciales habituales y encuentren automáticamente personalizado el contenido según su perfil.
Las universidades públicas con implantación a gran escala de Liferay como plataforma principal (web corporativa + portales de servicio) suelen optar por la edición Enterprise/DXP para disponer de soporte oficial con SLA, acceso a parches de seguridad garantizados y ciclos de vida predecibles para la planificación de actualizaciones. Aunque el documento no especifica explícitamente la edición, el uso de Liferay como portal principal de uah.es hace probable el uso de la edición con soporte comercial.
Liferay 6.x era una aplicación monolítica desplegada como un único WAR sobre el servidor de aplicaciones. A partir de Liferay 7.0 (2016), la arquitectura cambió radicalmente hacia un modelo modular basado en OSGi (Open Services Gateway initiative).
OSGi es un estándar de modularización para aplicaciones Java. En Liferay 7.x, toda la funcionalidad se organiza en bundles OSGi (módulos JAR con metadatos de dependencias). Esto permite:
El contenedor OSGi de Liferay es Apache Felix, que gestiona el ciclo de vida de todos los bundles.
El desarrollo de componentes para Liferay 7.x se realiza mediante Liferay Workspace, un entorno de proyecto basado en Gradle (o Maven) que facilita la creación, compilación y despliegue de módulos: portlets, temas, fragmentos, extensiones del core y personalizaciones. Las herramientas de desarrollo incluyen el plugin para Eclipse (Liferay IDE) y *IntelliJ IDEA.
El Panel de Control es la interfaz de administración de Liferay, accesible para usuarios con el rol Administrator. Desde aquí se gestiona todo:
Liferay utiliza Ehcache (y en versiones recientes también Infinispan para clustering) para cachear contenidos y objetos de base de datos. La correcta configuración del caché es crítica para el rendimiento del portal en producción.
Para entornos de alta disponibilidad, Liferay soporta clustering: múltiples nodos Liferay trabajando de forma coordinada con sesiones de usuario compartidas, caché distribuido y almacenamiento de documentos centralizado. El balanceo de carga se gestiona con un servidor web frontal (Apache + mod_proxy_balancer o un balanceador dedicado).
| Término | Definición rápida |
|---|---|
| Liferay Portal / DXP | Portal empresarial y plataforma de experiencia digital; base de uah.es |
| DXP | Digital Experience Platform; CMS + personalización + multicanalidad + workflows |
| Portlet | Componente Java de interfaz de usuario que se despliega en páginas Liferay |
| JSR-286 | Estándar Java EE que define la API de portlets (Portlet 2.0) |
| Site | Unidad organizativa de Liferay; agrupa páginas, contenidos y usuarios |
| Content Page | Tipo de página moderno basada en fragmentos arrastrables |
| Widget Page | Tipo de página clásica basada en columnas con portlets |
| Fragmento | Bloque HTML/CSS/JS reutilizable para construir Content Pages |
| Web Content | Módulo de gestión de contenidos; usa estructuras + plantillas Freemarker |
| Estructura | Esquema de campos que define un tipo de contenido |
| Plantilla | Código Freemarker que define cómo se renderiza una estructura |
| Documents & Media | Repositorio de activos digitales de Liferay |
| Asset Publisher | Portlet que muestra colecciones dinámicas de contenido filtradas |
| Rol de instancia | Rol con alcance global en todo el portal (ej. Administrator) |
| Rol de site | Rol con alcance limitado a un site concreto |
| LDAP | Directorio corporativo integrado con Liferay para autenticación y usuarios |
| SSO | Single Sign-On; autenticación única mediante CAS, SAML 2.0 u OpenID Connect |
| CAS | Central Authentication Service; protocolo SSO habitual en universidades |
| SAML 2.0 | Estándar de federación de identidad; Liferay actúa como Service Provider |
| Liferay CE | Community Edition; gratuita, código abierto, soporte comunitario |
| Liferay DXP/EE | Enterprise Edition; licencia comercial, soporte oficial con SLA |
| OSGi | Framework de modularización Java usado desde Liferay 7.x |
| Bundle OSGi | Módulo JAR con metadatos de dependencias; unidad de despliegue en Liferay 7.x |
| Apache Felix | Contenedor OSGi utilizado internamente por Liferay |
| Tomcat | Servidor de aplicaciones Java más utilizado con Liferay |
| Elasticsearch | Motor de búsqueda obligatorio en producción desde Liferay 7.x |
| Liferay Workspace | Entorno de desarrollo basado en Gradle para construir módulos Liferay |
| portal-ext.properties | Fichero de configuración principal de Liferay |