Título de la presentación 4
Sufridores del applet de @firma pesado (@firma3,4,5)OpenOces → viafirma GPLClientes pequeños en nuestros inicios
- Neutralidad en la integración versiones- NSS, Keychain nativo, CryptoAPI, GNOME Keyring- Applet realmente multiplataforma, ¿Donde está el truco?- iOS, Android, Blackberry, Windows Phone 7/8, Windows 8 ARM y PRO.
Historia
Funciona
Nuestro lenguajes
- Java- Javascript- Objetive-c
- Objetive-c- C# / mono- c++
Título de la presentación 5
Dispositivos, navegadores, sistemas operativos, permisos, plugins, Javascript?, cookies?, cache
Conocimientos, experiencia, ayer me funcionaba, antivirus, ...
Eterogeniedad de sistemas
Usuarios
Conexión
Fiabilidad de la conexión, ancho de banda, visibilidad, proxies, tarifa de datos, operadora de red, los malos,....
Nuestros enemigos como desarrolladores
Título de la presentación 6
Nuestro Objetivo
- Simplificar los conceptos involucrados: RSA, SHA1, PAdES, XAdES - Simplificar la integración (dispositivos?, integración?, formatos?....)- Adaptación y evolución continua- Tiene que ser sencillo de utilizar. Nos dan una sola oportunidad.
- Nuestros clientes NO son expertos- Nuestros clientes NO pueden dedicar muchos esfuerzos a EL PROBLEMA- En entornos clásicos de escritorio. Windows, Linux, MacOS.- Cualquier navegador cualquier, máquina virtual,....- En entornos móviles (iOS,Android,Blackberry, Windows phone, ...)- Operaciones de firma desatendidas, HSM, .......
Integradores: Simplificar y desmitificar la firma digital
Usuario: Funcionalidades desde cualquier dispositivo o situación
Título de la presentación 8
javascript Applet ?Librerías
ExtrasServidor/ WSDL
Tradicional
Centralizada
viafirma
Título de la presentación 10
• JavaEE (jdk 1.4+)
• Jbos 4,5,6
• WebSphere 5,6
• WebLogic 7,8,9
• Aspx/.Net
• PHP
portal para desarrolladores
kit de integración
http://developers.viafirma.com
• c++
• Objective-C
• PhoneGap
• Java (Escritorio)
• c#/Mono(Escritorio)
• Java (Android)
• Phyton
• Drupal
• Joomla
• Django
API standard • Jax-ws
• Jax-rs
• openId
Título de la presentación 12
Descargar el SDK
Montar el entorno
¿Qué ofrece el SDK?
Manos a la obra! (I)
Título de la presentación 13
Inicializar el cliente
Ejemplo de autenticación simple
¿Qué está pasando?
Manos a la obra! Autenticación (II)
Título de la presentación 14
Manos a la obra! Autenticación (III)
// Inicializamos el componente de firma// url del servicio, appkey, appPassString url=”http://services.viafirma.com/viafirma”String login="xnoccio";String pass="12345";ViafirmaClientFactory.init(url, url, login, pass);
Inicializar el cliente
Solicitar autenticación
ViafirmaClient client=ViafirmaClientFactory.getInstance();
client.solicitarAutenticacion(request, response,"/test");
Título de la presentación 15
Manos a la obra! Autenticación (IV)
Procesar respuesta autenticación
public class Test extends ViafirmaClientServlet {
public void authenticateOK(UsuarioGenericoViafirma usuario, HttpServletRequest request, HttpServletResponse response) {
// Obtenemos los datos del usuario // TODO procesar la respuesta String nif=usuario.getNumberUserId();
// TODO siguiente paso?}
Título de la presentación 16
Inicializar el cliente
Ejemplo de firma simple
¿Qué está pasando?
Manos a la obra! Firma (V)
Título de la presentación 17
Manos a la obra! Firma (V)
¿Qué quiero firmar?
¿Comó lo quiero firmar?
// 1.- Recuperamos la instancia de ViafirmaCliet ViafirmaClient client=ViafirmaClientFactory.getInstance();
// 2.- ¿Que quiero firmar? Documento documento=new Documento(); byte [] bytes=...; documento.setDatos(bytes); documento.setTipo(TypeFile.PDF); documento.setNombre("Documento ejemplo.pdf");
// 3.- Como quiero firmar Policy policy=new Policy(); policy.setTypeFormatSign(TypeFormatSign.PAdES_BES); policy.setTypeSign(TypeSign.ATTACHED);
Título de la presentación 18
Manos a la obra! Firma (V)
Preparamos el documento para su firma
Solicitamos la firma
// 4.- Iniciamos la firmaString temporalId=client.prepareSignWithPolicy(policy, documento);
// 5.- Solicitamos la firmaclient.solicitarFirma(temporalId,request, response,"/test");
Procesamos la respuestapublic void signOK(FirmaInfoViafirma signInfo, HttpServletRequest req,HttpServletResponse res) { // Obtenemos el identificador de firma String idSign=signInfo.getSignId(); // Recuperamos cualquier otro parametro ...
// Recuperamos el documento o cualquier otra información. byte [] datos=viafirmaClient.getDocumentoCustodiado(idSign);
}
Título de la presentación 19
Nativo - Nativo con salto (iOS, Android)
Librería interna (iOS, Android)
PhoneGap
Appcelerator
App to App Movil