Web clipping de aplicaciones en CAS y Liferay

Objetivos del «proyecto»

El objetivo es mostrar información específica de una página que está en una aplicación con autenticación  SSO (Single Sign On) via CAS (Central Authentication Service), de manera que si la información cambia respecto al usuario conectado esta también cambie dentro del portal Liferay de la misma forma que pasaria entrando en la aplicación destino.

Entonces.. ¿cómo presentamos la información específica por usuario de aplicaciones de terceros que estan securizadas mediante CAS dentro del Portal?

Veamos cómo empezó todo..

El proyecto del portal privado de la Universidad de las Islas Balears (UIB) surge somo respuesta a las peticiones de necesidad de crear un espacio privado por grupos Personal Administración y Servicios (PAS) / Personal Docente e Investigador (PDI)  que permitiera mejorar la comunicación interna mediante la colaboración online así como para establecer un directorio de aplicaciones a las cuales poder acceder.

Además del portal existe el sistema de  consulta de  fichajes, vacaciones, encuestas, nóminas, solicitudes.. de entre otras funcionalidades, una aplicación muy utilizada dentro del colectivo tanto de PAS como de PDI.

Desde hace años hasta hoy el Portal PAS/PDI basado en Liferay es la página de inicio de los ordenadores del PAS, en este se presenta la información relavante respecto del perfil de usuario una vez se han logueado.

Inicialmente la información se editaba y publicaba en el Portal, pero los usuarios demandaban el presentar la información de otras aplicaciones dentro del portal. Para ello  se pretendió mejorar la experiencia de usuario, acercándole la información (de aplicaciones de terceros) relevante y personalizada en la página de inicio.

ideaclipping
La mejora de la comunicación de la información  de los diferentes entornos hacia el usuario hace que esté más satisfecho e informado, así no tendría que ir navegando entre los sitios dónde se le presenta información importante y se mejoraría en usabilidad y en el acceso a la información.

La idea

La recolección o web clipping de información de aplicaciones de terceros desde Liferay suele tener mayor o menor complicación dependiendo de la forma de acceso y la selección de la información. En el entorno de aplicaciones de la UIB existen basicamente dos formas de acceso: autenticación por formulario específico o por autenticación via CAS / SSO.

Para el acceso a la información de aplicaciones con autenticación de formulario específico se podria utilizar el WebProxy Portlet o el IframePortlet si se configurara la URL con los parámetros de usuario y contraseña. Pero para aplicaciones bajo seguridad basada en CAS

Aparecen diferentes soluciones:

  • Iframe portlet: Presenta toda la aplicación dentro de un portlet Iframe, no permite una selección concreta de la información de todo el HTML mostrado.
  • WebProxy Portlet: Podemos seleccionar la parte de información específica via XSLT pero no permite autenticación SSO.
  • Creación de Portlets específicos para cada aplicación con autenticaciones específicas (OAuth, Básica, ..)

Solución adoptada en la UIB:

Creación de portlet para realizar el web clipping de la información y servicio Liferay para la gestión del servicio de tickets de “aplicaciones proxieadas” en cluster y filtros CAS.

Desarrollo

El protocolo SSO de CAS permite la creación dinámica de tickets de usuario desde aplicaciones, llamado CAS Proxy Protocol. Esto permite el poder acceder desde una aplicación a otra que este utilizando CAS como sistema de autenticación.

 

protocolproxy

La autenticación como usuario desde una aplicación Java  (ya sea un portlet, un servicio, etc) de Liferay nos deja acceder de manera transparente al servicio “proxieado” y así poder consumir sus recursos tal y como lo haria un usuario desde su navegador.

Para ello se utilizan los llamados CAS Proxy Granting Tickets (PGT), unos elementos del protocolo que permiten el crear tickets de servicio TS desde un cliente para así poder crear conexiones como usuario al servicio final.

El desarrollo que se realizó (UIBCasServicePortlet) permite desde un filtro de la aplicación guardar a través de un servicio Liferay estos Proxy Granting Tickets una vez realizada la autenticación típica de SSO. Así pues se almacenaran en un repositorio específico compartido los PGTs entre los diferentes nodos de Liferay que se ejecuten.  De manera que así, via un servicio de Liferay, es posible crear tickets de servicio de aplicaciones de terceros que esten bajo auntenticación CAS.

Para poder realizar el clipping de la información y poder presentarla en el portal era necesario crear un nuevo portlet (UIBCasProxyClippingPortlet) para consumir las funcionalidades del servicio anteriormente citado y crear la conexión a la aplicación final. Un portlet que es configurable para poder indicar la URL y un selector de bloques de código HTML basado en Jsoup.

Véase:

https://github.com/vrossello/uib-cas-service-portlet

https://github.com/vrossello/uib-cas-proxy-bridge-portlet

Conclusiones y futuro

El proyecto está implantado y existe un beneficio en el hecho que el usuario no se desplace entre aplicaciones, un beneficio de usabilidad a la hora de difundir la información en diferentes entornos para así acercar la información específica al usuario.

Se puede mejorar la idea si se amplian, desarrollan o extienden portlets basados en este tipo de conexión securizada con clientes que consuman de una API basada en CAS o clientes HTML como es el del WebProxyPortlet, para así poder tratar todo el HTML generado.

Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

Deja un comentario