Foros de consultas y discusión

Desarrollo de autenticación propio

Enzo Fabbiani, modificado hace 7 años.

Desarrollo de autenticación propio

Youngling Mensajes: 4 Fecha de incorporación: 21/04/17 Mensajes recientes
Buenas, estoy desarrollando un software que utilice autenticación mediante cédula electrónica (CIe)
La idea es hacer nosotros la autenticación y no delegarla al Servicio de Autenticación de uds. Estuve investigando un poco la wiki y no encontré mucho, aunque sí encontré en Git un ejemplo en Java.
 
La duda que me surge es que ese ejemplo ejecuta comandos para acceder a la info de la Smart card local, y yo necesito hacerlo en una aplicación web. Hay que instalar algún driver en el navegador para esa comunicación? 
 
Saludos,
​​​​​​​Enzo
thumbnail
Nicolas Piquerez, modificado hace 6 años.

RE: Desarrollo de autenticación propio

Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
Hola Enzo,
El problema de acceder a software criptográfico desde un navegador web no es menor. Hubo iniciativas de crear una API estandar javascript para la web pero no han tenido buen resultado. En el estado del arte de hoy en dia hay que apoyarse en alguna tecnología para poder acceder al hardware de la maquina.
Una tecnología que tuvo exito en su momento fue la de los applets Java, ya que permitia desplegar código que accede al hardware del sistema. Pero ya casi ningún navegador soporte los applets Java (en realidad el plugin Java que se basa en NPAPI). Por lo cual no es una buena alternativa hoy en día. Otra posibilidad es usar tecnologías como la de Java Web Start la cual permite mediante archivos descriptores ejecutar aplicaciones nativas y asi poder acceder al hardware. Pero nuevamente nos encontramos con problemas como que se debe de tener la tecnología instalada en el equipo del usuario y canales secundarios de comunicación entre la aplicación web y la aplicación de escritorio.
Otra via de acceder al hardware del equipo es mediante plugins del navegador. Aquí la complejidad esta en soportar la matriz de posibiidades navegador/sistema operativo para la cual hay que desarrollar el plugin.
En definitiva no hay un metodo fácil al estado del arte de hoy en día.
Justamente lo que aporta nuestro servicio es que cuenta con un plugin (Sconnect) que mantiene una matriz de compatibilidad amplia.
Una última posibilidad que aún no hemos explorado mucho pero se parece mucho al enfoque de Java Web Start es el de Web Intent (https://www.w3.org/TR/web-intents/), con esa tecnología se podría invocar a aplicaciones nativas, aunque aquí nuevamente tendríamos el problema de la matriz de compatibilidad si no se desarrolla la aplicación con una tecnología "cross-platform".
Despues existen otros matices como la autenticación TLS, pero de nuevo, depende del sistema operativo y de drivers y configuración instalada en el equipo del usuario.

Espero haya sido de ayuda.
Saludos,

Nicolas
Enzo Fabbiani, modificado hace 6 años.

RE: Desarrollo de autenticación propio

Youngling Mensajes: 4 Fecha de incorporación: 21/04/17 Mensajes recientes
Hola Nicolás, muchas gracias por tu respuesta.

Vamos a investigar un poco mediante autenticación TLS. Tenés alguna recomendación que quieras hacerme?

Saludos,
Enzo
thumbnail
Nicolas Piquerez, modificado hace 6 años.

RE: Desarrollo de autenticación propio

Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
Muy bien, la autenticación TLS la maneja el explorador, por lo que dependiendo el caso va a utilizar su propio metodo.

Internet Explorer: Utiliza los almacenes de Microsoft, instalando los drivers se agrega soporte a la CAPI (API de Microsoft para criptografia) por lo que es de esperarse que con los drivers puedas realizar la autenticación con la cedula.

Firefox: Utiliza su popio almacen (NSS). Para agregar soporte a la cedula al almacen hay que configurar el driver a traves de la librería PKCS#11.

Chrome: Utiliza el almacen del sistema operativo subyacente. En Windows es esperable que use el almacen de Microsoft (mismo caso que IE), en Linux no estoy del todo seguro pero utiliza un almacen NSS según entiendo. En macOS utiliza el llavero del sistema, de alguna manera hay que instalar el driver y cargar el certificado de la cedula en el llavero.


O sea en todos los casos hay que investigar como funciona la autenticación para la combinación explorador/sistema y se va a necesitar de software, minimamente el driver para acceder al certificado de la cedula.

Saludos