Mostrando entradas con la etiqueta floss. Mostrar todas las entradas
Mostrando entradas con la etiqueta floss. Mostrar todas las entradas

Integrando Viafirma en Redmine

viernes, 4 de febrero de 2011 2 comentarios
Llevo varios días interesándome por la plataforma Viafirma, desarrollada por Viavansi, y es que considero que es la mejor alternativa a día de hoy para disponer de un entorno basado en m-government real. Yo hace ya tiempo que la conocía, y de hecho siempre la he recomendado como alternativa a otras plataformas de autenticación y firma digital. La última referencia que di de ellos fue en mi ponencia de administración electrónica de las II Jornadas de Conocimiento Libre y Web 2.0 de la Universidad de Cádiz.

El caso es que me pico la curiosidad y tras desarrollar el plugin de integración de JOSSO y Redmine, y ojear la documentación de la zona de desarrolladores de Viafirma que han puesto a disposición de todos para realizar integraciones, me propuse hacer una integración rápida entre Redmine y Viafirma para gestionar la autenticación de usuarios de Redmine haciendo uso de certificados digitales. Dado que es un experimento me propuse hacerlo rápido, poco menos de cinco minutos, haciendo uso de los clientes de integración que hay disponibles y de la distribución SaaS de Viafirma. En este caso opté por hacer uso del cliente de PHP de tal forma que pense lo siguiente:

  • En primer lugar llevar a cabo el desarrollo de un pequeño plugin de Redmine donde solo tendria que rediseñar el controlador AccountController al igual que hice para el plugin de autenticación de Redmine mediante JOSSO de tal forma que capturase la petición de login de Redmine y me gestionase la redirección al servicio de Viafirma para llevar a cabo la autenticación. 
  • A continuación, tras llevar a cabo la configuración del cliente de PHP y levantarlo en un servidor Apache, reescribí el index.php, para que directamente me redireccionará a openidLogin.php, de tal forma que cuando se lleve a cabo la petición de autenticación, me aparezca lo siguiente:

 

  • A continuación Viafirma se encarga de obtener los datos de mi certificado y este lleva a cabo la redirección a quien realizo la petición, en este caso el cliente, tal y como se puede ver en la captura mostrada. Tras esto, me limite simplemente a modificar levemente dentro de openidLogin.php la URL de retorno tras el proceso de autenticación, redireccionando la petición a end.php, un pequeño script en PHP que en caso de autenticación satisfactoria vuelve a redirigirme a Redmine invocando nuevamente al controlador de la petición login, con los datos de mi certificado, de tal forma que este controlador ya no invoca de nuevo al servicio de Viafirma sino que cruza los datos de mi certificado con sus usuarios. En caso de que exista algun usuario dado de alta en Redmine con el identificador numberUserId el controlador gestionará la autenticación de este mostrando además los datos de su certificado como podemos ver aquí. 

Et voilá! sencillo y rápido. Como ya comente, quería solo experimentar. Evidentemente, lo elegante habría sido desarrollar un cliente en Ruby para Viafirma, pero no tengo tiempo ahora mismo para eso, así que de momento, esta es la solución rápida. Acabo de liberar el código de este ejemplo bajo licencia GNU GPL v2, así como las modificaciones del cliente de Viafirma en Github, y he indexado el plugin en el directorio de Redmine. 


Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

Redmine JOSSO Authentication Plugin

miércoles, 2 de febrero de 2011 2 comentarios
Así es como se llama mi nuevo proyecto personal al que por fin he terminado de dar forma, intercalandose en el tiempo a la finalización de otro de mis plugins para Redmine, concretamente el de integración con Enterprise Architect. El objetivo de este plugin es poder gestionar el acceso a Redmine mediante un sistema de Single Sign-On (SSO), de tal forma que podamos reutilizar esa instancia de autenticación para acceder a otras aplicaciones donde se requieran credenciales de acceso. En esta ocasión he optado por hacer uso de JOSSO (Java Open Single Sign-On).

Tal y como anuncie ayer en mi Twitter, he llevado a cabo la liberación de este plugin en Github bajo licencia GNU GPL v2, asi como su publicación e indexación en el nuevo directorio de plugins oficiales de Redmine. 

El proceso de instalación del mismo es el habitual para otros plugins con la salvedad de que se requiere invocar a un pequeño script de inicialización que completa la gem josso-client para su correcto funcionamiento. A continuación, en función del entorno RAILS_ENV que se este usando para la instancia de Redmine sobre la que instalar el plugin, se llevara a cabo la configuración del mismo en el fichero config/josso_config.yml

1
2
3
4
5
6
7
8
9
development:
 enabled: true
 josso_root: http://localhost:8080/josso/
 partner_application_entry_url: http://localhost:81/redmine/login/
 session_timer: 1800
 josso_identity_manager: services/SSOIdentityManagerSoap
 josso_identity_provider: services/SSOIdentityProviderSoap
 josso_session_manager: services/SSOSessionManagerSoap
 josso_ws_timeout: 3000000

En este ejemplo podemos ver la configuración para el entorno de desarrollo, donde especificamos donde se encuentra la instancia de JOSSO sobre la que vamos a trabajar, asi como los puntos de acceso a los servicios web que nos proporciona, y la URL de Redmine sobre la que se va a realizar un punto de extension de su controlador para adaptarlo a nuestras necesidades.

En el siguiente video podeis ver un ejemplo del plugin en funcionamiento, en el cual se muestra como se gestiona el acceso de dos usuarios desde dos navegadores distintos, así como la gestión de permisos de estos dentro de Redmine una vez autenticados. 





Un par de detalles antes de concluir. Este plugin solo se ha centrado en la autenticación de los usuarios en Redmine, no en la gestión de los roles y/o permisos asociados de los mismos delegando esta responsabilidad totalmente a Redmine. Otra de las limitaciones es que no se posibilita por ahora la permutación de metodos de autenticación, así como el registro de nuevos usuarios, el cual no se sincroniza con los usuarios de JOSSO.  Por lo tanto, si queréis agregar nuevos usuarios tendréis que añadirlos también a JOSSO además de a Redmine. 


Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

Ultimando detalles

martes, 25 de enero de 2011 0 comentarios
Estos días estoy ultimando la publicación de la nueva versión del plugin de integración de Redmine con Enterprise Architect, aunque ya no se si llamarlo así sinceramente, ya que como mostré en un post anterior he desarrollado también la integración con Trac, como feature de esta nueva versión.


Aún queda mucho por hacer, y como ya anuncie por Twitter, me gustaría liberarlo ya, pero quiero terminar de ultimar esta versión. Los ultimos retoques se han centrado en confirmar la compatibilidad de este plugin con la rama 1.1.x de Redmine, y en mejorar un poco la experiencia del usuario con la aplicación, concretamente optimizando el acceso a los datos mediante cache, reduciendo el tiempo de generación de la descripción y el análisis del fichero de especificación definido en Enterprise Architect y depurando algunos errores. En cuanto la tenga lista, la indexare en el nuevo directorio de plugins de Redmine, mientras tanto podéis ver la documentación de la versión anterior.


Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

Refinando la integración de Enterprise Architect

lunes, 27 de diciembre de 2010 0 comentarios
Uno de los últimos refinamientos de mi proyecto de integración de Enterprise Architect con Redmine ha consistido en la adaptación de este como un plugin Maven para que pueda ser ejecutado de forma programada y periódica bajo una herramienta de integración continua dentro de nuestro ecosistema software favorito. Además se han añadido nuevos formatos de salida entre los que destaco la salida en formato wiki para Trac 0.11 y 0.12 entre otros.

Las features de esta nueva version a liberar son:
  • Nucleo independiente del metamodelo del documento de especificacion
  • Procesamiento de documentos de tipo Enterprise Architect (mediante API Java eaapi)
  • Descripcion: Informacion textual
  • Descripcion: Informacion grafica
  • Descripcion: Logotipo
  • Descripcion: Indice de contenidos
  • Formato de descripcion: Redmine 0.8.x, 0.9.x
  • Formato de descripcion: Trac 0.11
  • Operaciones de analisis: Estadisticas (#entidades, #diagramas, #stereotypes, #{#stereotypes}, #files)
  • Operaciones de analisis: Graficas de estadisticas (%elementos, %stereotypes)
  • Operaciones de analisis: Trazabilidad (bidireccional)
  • Operaciones de analisis: Errores, Warnings e Info
  • Formato de analisis: Redmine 0.8.x, 0.9.x
  • Formato de analisis: Trac 0.11
  • Capa de servicio web Axis y WSDL4j
  • Acceso a documentos de especificacion bajo control de versiones en SCM de tipo Subversion
  • Gestion y eliminacion de temporales en workspace
  • Cliente basado en plugin Redmine
  • Cacheo de descripciones bajo plugin Redmine
  • Cliente basado en plugin Maven
  • Integracion en sistemas CI, probado y funcionando correctamente en Hudson
  • Cliente basado en PHP nusoap
  • Integracion con Nagios para monitorizacion del servicio
  • Plantilla horizontal de especificacion de proyectos basada en Enterprise Architect
  • Proyecto 100% Maven
Para muestra un botón:



Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

Integrando Enterprise Architect con Redmine

jueves, 23 de diciembre de 2010 2 comentarios
Uno de mis proyectos personales favoritos ha sido el de integrar las herramientas Enterprise Architect y Redmine.

Redmine es una plataforma web de trabajo colaborativo orientada a la coordinación de proyectos, principalmente de desarrollo software, sirviendo como herramienta principal de comunicación entre los distintos componentes del proyecto. Dicha plataforma se distribuye libremente bajo licencia GNU General Public License v2 (GPL).

Enterprise Architect es un producto comercial de Sparx Systems que se presenta como una plataforma para el desarrollo y modelado colaborativo de artefactos basados en UML 2.1 y similares. Concretamente es muy empleada para el desarrollo y modelado de documentos de especificación de requisitos de proyectos software.

En primer lugar lleve a cabo el desarrollo de un webservice que implemente la logica de parseo, procesado y analisis de ficheros *.eap independientemente de la plantilla empleada para la definicion de su contenido. El acceso a la definicion del contenido del fichero *.eap se lleva a cabo haciendo uso de la API de Enterprise Architect.

Despues, desarrolle un plugin para Redmine con el que gestionar ficheros *.eap dentro de un proyecto definido bajo Redmine y que actue como cliente del webservice anteriormente citado consumiendolo y obteniendo los datos necesarios para poder llevar a cabo la presentacion de los resultados obtenidos para Redmine.




Si quereis conocer mas detalles de este proyecto podeis echarle un vistazo en:
https://community.ingenia.es/redmine/wiki/earedmine
http://www.redmine.org/wiki/redmine/Plugin_List#Enterprise-Architect-plugin

Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live