En esta entrada vamos a compartir los primeros resultados que se han obtenido en Clinker. Tal y como se refleja en su roadmap, una de las líneas de trabajo que pusimos en marcha fue incorporar un Single Sign On. Clinker es un claro ejemplo de integración de herramientas, y tratándose de ecosistema de desarrollo software, era muy probable que incluyésemos subversion. Esta herramienta puede instalarse de tres formas distintas según el acceso al repositorio que necesitemos:
- Local: Requiere que el cliente esté en la misma máquina donde se encuentran los repositorios. Útil para instalaciones locales o cuando tenemos el sistema que ficheros que contiene a los repositorios importado de alguna forma. Nunca lo hemos visto en entornos de producción. Se accede mediante file://
- SVN: Dispondremos de un servicio al que nos conectamos con un cliente de subversion. Proporciona su propio mecanismo de autenticación y autorización de usuarios. Se accede mediante svn://
- DAV: Es Apache Web Server el que proporciona el acceso a los repositorios. Sobre el protocolo HTTP se añade una nueva capa para dar soporte al protocolo DAV, y sobre éste, se personalizan las opciones de subversion. Son módulos de Apache Web Server los que se encargan de proporcionar autenticación y autorización. Se accede mediante http[s]://
El escenario con el que más nos hemos encontrado es precisamente este último. Sea cual sea el modo de acceso a los repositorios uno de los grandes inconvenientes al que los administradores de sistemas se enfrentan es gestionar volúmenes grandes de repositorios, usuarios y grupos. Resulta tedioso gestionar las cuentas de usuario (autenticación), grupos (autorización) y permisos (autorización). Os sonará este archivo:
[cc lang="php"]
[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = harry, sally, joe, frank, jane
#Groups can be granted access control just like users. Distinguish them with an “at” (@) prefix:
[calc:/projects/calc]
@calc-developers = rw
[paint:/projects/paint]
jane = r
@paint-developers = rw
[/cc]
Pues bien, vuestro sufrimiento no tiene por qué continuar. En @klicap hemos estado trabajando para que subversion quede completamente integrado en Clinker SSO. Para ello hemos contado con JOSSO (Java Open Single Sign On) sobre el que hemos desarrollado varios plugins que nos permiten extender las funcionalidades que ofrece y cubrir así las necesidades detectadas. Para la integración de subversion y Clinker SSO se han desarrollado dos módulos para Apache Web Server:
- Apache Authnz Clinker: Se encarga de la autenticación. Nos permite olvidarnos del conocido .htpasswd
- Apache Authz SVN Clinker: Se encarga de la autorización. Nos permite olvidarnos del archivo antes mencionado.
Ambos módulos consumen el servicio web que expone uno de los plugins que se han desarrollado para JOSSO. Clinker SSO está diseñado para trabajar con una base de datos como almacén de datos (persistencia) pero siempre tendremos la opción de usar otros almacenes de datos o incluso combinarlos. Es decir, podemos usar LDAP para las credenciales de los usuarios (autenticación) y MySQL para los grupos y permisos (autorización). Por ahora usamos únicamente una base de datos.
Y ahora tenemos que presentar Clinker Administrator. Una herramienta basada en tecnología web desde la que administramos el ecosistema. Será en esta misma herramienta desde la que se gestionen los usuarios que tanto Subversion como el resto de herramientas (alfresco, trac, hudson, sonar, etc.) compartirán.
Por lo tanto si tenéis Subversion como sistema de control de versiones ya tenéis una nueva alternativa para la gestión de usuarios. Lo más parecido a Clinker SSO + Subversion es AccesSVN de la empresa Polarion Software. Durante estos días estamos trabajando en preparar Clinker Virtual Appliance. Una máquina virtual basada en VMWare con Clinker con la que podréis probar el funcionamiento de Clinker SSO.