De acuerdo con este documento de Oracle, las tarjetas inteligentes Java 3.0 pueden tener servlets instalados en ellas en lugar de los applets de Java convencionales. Aquí está el documento de Oracle según.
http://www.oracle.com/technetwork/articles/java/javacard-servlets-136657.html
"Los desarrolladores ya no necesitan crear aplicaciones de cliente individuales para acceder a los datos y recursos de la tarjeta inteligente. La única interfaz de cliente que se necesita es un navegador web normal. Las aplicaciones de tarjeta inteligente ahora funcionan completamente como servidores basados en TCP. Estas aplicaciones de servidor son servlets Java y tienen una pila HTTP completa que les permite procesar solicitudes GET, solicitudes POST, encabezados, cookies, sesiones, etc. Puede proteger los datos entre el cliente (el navegador) y el servidor (la tarjeta inteligente) al usando el estándar de la industria SSL (capa de sockets seguros)".
Mi situación es que quiero interactuar con la tarjeta inteligente de un usuario desde mi sitio web. Los métodos convencionales, el uso de applets de Java dentro del HTML en mi sitio web ya no es compatible, Java Web Start es ineficiente y no es fácil de usar.
Un ejemplo sencillo es la verificación de PIN. Un pin de 4 dígitos se almacena en la tarjeta inteligente. Mi sitio web solicitará al usuario que ingrese su PIN, inserte su tarjeta inteligente en su lector. Mi sitio web podrá enviar el comando APDU necesario que tenga su PIN ingresado a la tarjeta, y podrá recibir los comandos APDU de respuesta que le permiten al servidor web saber si el PIN era correcto o no.
Mi pregunta es, ¿es posible que mi sitio web interactúe con la tarjeta inteligente de un usuario, dadas las capacidades de un servlet que se ejecuta en la tarjeta inteligente?
Si es así, ¿alguien puede proporcionarme algún pseudo simple o dirección para lograr esto? No he trabajado con servlets pero puedo aprender.
Lo que está describiendo es parte de la API llamada edición Java Card Connected . La mayoría, si no todas, las implementaciones de Java Card en el mercado son ediciones de Java Card Classic. El principal problema técnico de la edición conectada es que requiere tarjetas inteligentes con una memoria de 24 a 32 KiB de memoria. Puede que no suene mucho, pero la SRAM integrada es muy cara. Las tarjetas "clásicas" de gama alta tienen entre 8 y 12 KiB de RAM.
Para tener algún tipo de interacción con el sitio web, necesita algún tipo de conexión. De alguna manera, debe convertir esta solicitud HTTP (S) en paquetes que se envían a la tarjeta y viceversa. Mientras no se instale ningún software para hacerlo, no podrá conectar el navegador a la tarjeta inteligente.
Por supuesto, existen varias soluciones cuando se trata de conectar navegadores a tarjetas inteligentes. Complementos de navegador propietarios, módulos PKCS#11, applets. Ya nombró webstart y los subprogramas de Java (edición estándar), cada vez más escasos. Todos tienen sus pros y sus contras. En la mayoría de las situaciones, Java Card Connected no es directamente aplicable, lamentablemente.