Buenas tardes a todos los foristas:
Quisiera escuchar sus opiniones acerca de cuál es la mejor manera de acuerdo a su experiencia, de compartir alguna funcionalidad o código. Me gustaría plantear el escenario en el que me encuentro y escuchar sus opiniones.
Actualmente en la empresa donde trabajamos, tenemos distintas aplicaciones web y muchas más que vienen en camino. Hemos ideado un modelo de BD para la autenticación de los usuarios que pretendemos que sea genérica para todas las aplicaciones. Tenemos desarrollado un módulo en JSP-JAVA-PrimeFaces-Hibernate para el proceso de autenticación que nos gustaría "extraer" y ponerlo como servicio, de tal manera que cualquier aplicación pueda utilizarlo y así reutilizar el código ya desarrollado.
Un usuario podrá acceder a distintos proyectos, y con distintos perfiles. La pantalla principal solicita usuario/contraseña, el módulo verifica en la BD si el usuario tiene acesso a uno o más proyectos, si son varios entonces presenta una pantalla con la lista de todos los proyectos disponibles para que seleccione aquel al que quiere acceder (Si solo tiene acceso a uno, pues no presentaría esta pantalla). Si el usuario tiene varios perfiles asociados al proyecto al que quiere acceder, entonces presenta otra pantalla con la lista de los perfiles que tiene asociados para que el usuario elija uno. Una vez echo esto, el módulo envía de regreso el usuario, el perfil, el proyecto y una cadena de verificación a la aplicación que lo invoque.
Ahora bien, tenemos pensado varias alternativas para poder compartir esta funcionalidad, pero quisiera que me dieran sus puntos de vista.
La primera sería como una librería de JAVA (JAR) la cual se distribuiría a todas las aplicaciones. El inconveniente que pensamos que puede tener es que si hacemos alguna modificación al módulo tendríamos que volver a distribuir la librería entre cada aplicación.
La segunda opción que pensamos sería mediante un Web Service, donde se regrese como respuesta un arreglo con todas las aplicaciones y perfiles asociados a cada usuario. Las pantallas de selección serían responsabilidad entonces de la aplicación que la invoca, no del modulo en si.
La tercera opción es pensarlo como una aplicación embebida, es decir, que mediante una URL se cargué la parte de la autenticación (en un Iframe por ejemplo), pero donde las aplicaciones puedan estar en contenedores distintos.
No sé si ustedes tienen alguna otra alternativa o cuál consideren que es la mejor opción para hacer algo como lo que queremos.
Cualquier aportación será de mucha ayuda.
Saludos
Leo.