Desarrollo de Soluciones Cliente-Servidor para la Verificación ...
Desarrollo de Soluciones Cliente-Servidor para la Verificación ...
Desarrollo de Soluciones Cliente-Servidor para la Verificación ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.2. Single Sign-On <strong>para</strong> el Web 37<br />
tema operativo, lo que significa que <strong>de</strong>sarrol<strong>la</strong>r aplicaciones multip<strong>la</strong>taforma conformes<br />
al estándar BioAPI no es una tarea sencil<strong>la</strong>. Portar el Framework BioAPI al entorno Java<br />
facilitaría el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones biométricas orientadas al Web <strong>de</strong>bido a que ya<br />
existen numerosas tecnologías orientadas al Web realizadas en Java. Es por ello, que <strong>la</strong><br />
existencia <strong>de</strong> una versión puramente Java <strong>de</strong> <strong>la</strong> BioAPI proporcionaría numerosas ventajas,<br />
y a<strong>de</strong>más contaría con <strong>la</strong> particu<strong>la</strong>ridad <strong>de</strong> facilitar <strong>la</strong> extensión <strong>de</strong> <strong>la</strong>s aplicaciones<br />
biométricas a dispositivos móviles. Existe una propuesta <strong>de</strong>l INCITS [INCITS, WWW]<br />
sobre <strong>la</strong> estandarización <strong>de</strong> una especificación <strong>de</strong> <strong>la</strong> BioAPI en Java que todavía se encuentra<br />
en proceso. A<strong>de</strong>más, existe un problema <strong>de</strong> interoperabilidad entre el nuevo marco<br />
puramente Java y <strong>la</strong>s existentes implementaciones <strong>de</strong> los BSPs realizados en C/C++ no<br />
solucionado a priori. Es por ello, por lo que se necesita una solución con disponibilidad<br />
inmediata.<br />
Para acce<strong>de</strong>r al Framework BioAPI hecho en C/C++ <strong>de</strong>s<strong>de</strong> el entorno Java, se pue<strong>de</strong><br />
usar un Java Wrapper basado en <strong>la</strong> tecnología Java Native Interface (JNI). JNI es una<br />
interfaz <strong>de</strong> programación estándar <strong>para</strong> escribir métodos nativos que se pue<strong>de</strong>n invocar<br />
<strong>de</strong>s<strong>de</strong> Java, e incluso, po<strong>de</strong>r utilizar <strong>la</strong> máquina virtual Java <strong>de</strong>ntro <strong>de</strong> aplicaciones nativas.<br />
En el momento en el que nos p<strong>la</strong>nteamos en esta Tesis <strong>la</strong> búsqueda <strong>de</strong> un Java Wrapper<br />
que nos permitiera utilizar el Framework BioAPI, existían dos proyectos: el JNI BioAPI<br />
Wrapper <strong>para</strong> Windows <strong>de</strong>sarrol<strong>la</strong>do por Gens Software, y el proyecto <strong>de</strong> código libre<br />
JBioAPI <strong>para</strong> Linux/Unix. Ambos proyectos basados en <strong>la</strong> especificación BioAPI 1.1.<br />
El principal problema que se nos presentó fue que los dos proyectos no eran compatibles<br />
entre sí, y eso complicaba el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones multip<strong>la</strong>taforma conformes<br />
al estándar BioAPI. Por otra parte, sendos proyectos so<strong>la</strong>mente ofrecían acceso a <strong>la</strong>s abstracciones<br />
<strong>de</strong> alto nivel, y no a <strong>la</strong>s primitivas <strong>de</strong> bajo nivel, por lo que no permitían dividir<br />
el proceso <strong>de</strong> autenticación entre una máquina cliente y un servidor. Fue necesario realizar<br />
varias contribuciones al proyecto JBioAPI <strong>para</strong> po<strong>de</strong>r ofrecer una solución viable a este<br />
problema, tal y como veremos en <strong>la</strong>s sección 4.2.5.<br />
3.2. Single Sign-On <strong>para</strong> el Web<br />
Los sistemas Single Sign-On (SSO) permiten transportar <strong>la</strong> información <strong>de</strong> autenticación<br />
<strong>de</strong> un sistema a otro. En otras pa<strong>la</strong>bras, supongamos que disponemos <strong>de</strong> una serie<br />
<strong>de</strong> servicios distribuidos en diferentes proveedores Web, en un entorno normal, al acce<strong>de</strong>r<br />
a cualquier servicio <strong>de</strong> un proveedor necesitamos autenticarnos. Este hecho provoca<br />
<strong>la</strong> pérdida <strong>de</strong> tiempo en varios procesos <strong>de</strong> autenticación y disminuye <strong>la</strong> usabilidad. En<br />
lugar <strong>de</strong> esto, los sistemas Single Sign-On nos permiten centralizar este proceso. La i<strong>de</strong>a<br />
es que el usuario se autentica una so<strong>la</strong> vez contra el sistema centralizado, y éste le expen<strong>de</strong><br />
un tícket. Cuando el usuario quiere usar un <strong>de</strong>terminado servicio presenta este tícket,<br />
el servicio se conecta con el servidor Single Sign-On <strong>para</strong> pedir <strong>la</strong> validación <strong>de</strong>l tícket<br />
presentado por el usuario, en caso <strong>de</strong> validar correctamente el usuario, éste pue<strong>de</strong> acce<strong>de</strong>r<br />
al servicio como si se hubiera autenticado en él <strong>de</strong> forma normal. Como hemos dicho,<br />
un SSO es un procedimiento <strong>de</strong> autenticación que habilita al usuario <strong>para</strong> acce<strong>de</strong>r a varios<br />
sistemas con una so<strong>la</strong> instancia <strong>de</strong> i<strong>de</strong>ntificación, también se les l<strong>la</strong>ma sistemas <strong>de</strong><br />
autenticación reducida (Reduced Sign On Systems) y hay cinco tipos principales: