26
ElevenPaths, innovación radical y disruptiva en seguridad

Referencia de Servicios Web de SQS

Embed Size (px)

Citation preview

ElevenPaths, innovación radical y disruptiva en seguridad

Página 2 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Contenidos

1 Introducción ............................................................................................................... 3

2 Interfaces de Servicios Web de SealSign SQS ............................................................... 5

2.1 Clases comunes ........................................................................................................................ 5

2.1.1 QueueReference ......................................................................................................................... 5

2.1.2 JobReference .............................................................................................................................. 5

2.1.3 JobReferenceEx .......................................................................................................................... 6

2.1.4 STUButtonDefinition .................................................................................................................. 7

2.1.5 STUConfiguration ....................................................................................................................... 8

2.1.6 SignatureClientBehaviour ........................................................................................................... 8

2.1.7 Job .............................................................................................................................................. 9

3 Servicio de colas de Firma Biométrica SOAP 1.1 .......................................................... 10

3.1 Métodos .................................................................................................................................. 10

3.1.1 AddQueue................................................................................................................................. 10

3.1.2 RemoveQueue .......................................................................................................................... 10

3.1.3 GetQueueReferences ............................................................................................................... 11

3.1.4 AddJob ...................................................................................................................................... 11

3.1.5 SetProcessedJob ....................................................................................................................... 11

3.1.6 RemoveJob ............................................................................................................................... 12

3.1.7 ChangeJobOwner ..................................................................................................................... 12

3.1.8 GetPendingJobs ........................................................................................................................ 13

3.1.9 GetProcessedJobs ..................................................................................................................... 13

3.1.10 GetJob....................................................................................................................................... 14

4 Firma Distribuida en Cliente ....................................................................................... 15

4.1 Arquitectura de la Firma Distribuida de SealSign SQS ............................................................ 15

5 Servicio de Firma Distribuida de SQS .......................................................................... 17

5.1 Interfaz ISignatureProvider ..................................................................................................... 17

5.2 Registro de Proveedores de Firma ......................................................................................... 18

5.3 DefaultSignatureProvider ....................................................................................................... 18

5.3.1 Configuración del DefaultSignatureProvider ............................................................................ 19

5.4 Métodos .................................................................................................................................. 23

5.4.1 BeginBiometricSignatureProvider ............................................................................................ 23

5.4.2 EndBiometricSignatureProvider ............................................................................................... 24

6 Recursos .................................................................................................................... 25

Página 3 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

1 Introducción

SealSign SQS (Signature Queue Services) es un módulo destinado a la gestión de colas de trabajos de firma biométrica. El objetivo es poder añadir, de manera sencilla, documentos para ser firmados biométricamente posteriormente.

Los documentos son añadidos a las colas de firma bien mediante desarrollo, invocando a los métodos del servicio de SealSign SQS, o bien mediante la impresión de documentos a través de una impresora virtual en entorno Microsoft Windows. En el caso del uso de la impresora virtual, es importante conocer que el documento a imprimir, se renderiza y se convierte a formato PDF antes de ser firmado.

Una vez añadidos a una cola, estos documentos quedarán a la espera de ser firmados mediante un agente de firma. Este agente, denominado SQS Client, permite consultar los trabajos pendientes de firma asignados al usuario, proveyéndole de la funcionalidad necesaria para realizar la firma de cada documento, usando un dispositivo de captura de firma manuscrita. En la actualidad existen agentes para la plataforma Windows y para dispositivos Android.

Con la arquitectura de colas, SealSign SQS habilita la posibilidad tanto de firmar cualquier documento del sistema (mediante el renderizado y conversión a PDF realizado por la impresora virtual), como de enviar desde un equipo y firmar desde otro equipo o tableta distintos.

En el siguiente esquema se muestran los distintos módulos de SealSign SQS y su interacción con el resto de módulos de la plataforma SealSign.

Imagen 01: Módulos de SealSign para SQS.

La solución de colas de firma e impresión virtual se compone de los siguientes módulos:

Módulo SQS (Signature Queue Services): Se trata del servicio web de gestión de colas de trabajos de firma. Los servicios proporcionados por este módulo son usados tanto por el módulo de

Página 4 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

impresora virtual como por los agentes para Windows y Android. En el otro extremo, SQS utiliza los servicios web de SealSign BSS para realizar el proceso de inclusión de firma manuscrita de documentos.

Módulo Virtual Printer: Este módulo permite la creación de una o varias impresoras virtuales en la plataforma Windows. A través de la impresora virtual, es posible encolar trabajos de firma sin necesidad de modificar las aplicaciones existentes.

Módulo Cliente: Se trata de la aplicación cliente de firma de trabajos existentes en las colas de SQS. Permite la captura de la firma manuscrita usando tabletas Wacom en entornos Windows o mediante tabletas con sistema operativo Android.

SealSign SQS expone su funcionalidad a través de Servicios Web basados en la tecnología WCF (Windows Comunication Framework). Estos servicios pueden ser invocados por aplicaciones implementadas sobre la mayoría de las tecnologías del mercado.

Este documento recoge la descripción de dichos servicios, así como la posibilidad de personalizar el comportamiento de firma de cada cola a través de un tipo de add-in especial, denominado Signature provider.

Página 5 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2 Interfaces de Servicios Web de SealSign SQS

Los servicios web de SealSign SQS están accesibles a través de dos interfaces. Esto es debido a la heterogeneidad de tecnologías disponibles en el mercado ya que uno de los principales objetivos es el poder ser accesibles desde la gran mayoría de aplicaciones corporativas:

Interfaz basado en la especificación SOAP 1.1 (BasicHttpBinding). Expone un único Servicio Web:

o Servicio de colas de trabajo (SignatureQueueServiceBasic.svc): Proporciona las capacidades de gestión y firma de documentos encolados.

Interfaz basado en la especificación SOAP 1.2 y WS-Addressing (WsHttpBinding). Expone los siguientes Servicios Web:

o Servicio de colas de trabajo (SignatureQueueService.svc): Proporciona las capacidades de gestión y firma de documentos encolados.

o Los servicios estarán accesibles en el directorio virtual SealSignSQSService. Por ejemplo: http://localhost/sealsignsqsservice/signaturequeueservice.svc.

Según la tecnología y las capacidades de la aplicación cliente, se podrá invocar a uno u otro interfaz.

2.1 Clases comunes

Las siguientes clases se utilizan como parámetros en los servicios web, independientemente del interfaz al que se acceda. Estas clases están definidas dentro de la librería de tipos SealSignSQSTypes.dll.

2.1.1 QueueReference

Los métodos de consulta de trabajos pendientes, GetPendingJobs, o de trabajos procesados, GetProcessedJobs, recibe un array de elementos de esta clase con el que se especifica/n la/s cola/s que se quieren consultar. La lista de colas existentes se puede obtener mediante una llamada al método GetQueueReferences.

La clase QueueReferences está definida del siguiente modo:

public class QueueReferences

{

public int id;

public string name;

}

Miembros:

id: Identificador de la cola de trabajo.

name: Nombre de la cola de trabajo.

2.1.2 JobReference

Cada instancia de esta clase representa cada uno de los trabajos existentes en una cola. Los métodos de consulta de trabajos pendientes, GetPendingJobs, o de trabajos procesados, GetProcessedJobs, retornarán un array de instancias de esta clase.

Página 6 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

La clase JobReference está definida del siguiente modo:

public class JobReference

{

public int id;

public string idQueue;

public string owner;

public string computerName;

public int originalJobId;

public string jobTitle;

public DateTime time;

public byte[] blob;

public string JobMetadata;

}

Miembros:

id: Identificador del trabajo.

idQueue: Identifica a la cola en la que se encuentra almacenado el trabajo de firma.

owner: Cuenta de usuario que figura como propietario del trabajo (en formato SAM: dominio\usuario). Un trabajo sólo puede ser consultado/firmado/administrado por su propietario o por los miembros del grupo de administradores de SQS (SealSignSQS Admins).

computerName: Nombre del equipo desde el que se añadió el trabajo a la cola.

originalJobId: Identificador del trabajo en la cola de impresión de la impresora virtual. Este identificador sólo tiene sentido si el trabajo se añadió a la cola imprimiendo el documento a través de la impresora virtual.

jobTitle: Título del trabajo de firma.

time: Fecha y hora de la última modificación realizada sobre el trabajo. Contiene la fecha y hora de creación del trabajo o la fecha y hora de la última firma.

blob: Array de bytes del documento a tratar en el trabajo actual.

JobMetadata: Cadena de caracteres asociada al documento que se pasará al signature provider. Se trata de un valor libre que tiene sentido sólo entre los dos extremos, es decir, el proceso que añade el trabajo a la cola especifica un valor que será interpretado por el signature provider desarrollado a tal efecto. Es, por tanto, un método para pasar valores de manera transparente entre un cliente de SQS y un proveedor de firma personalizado.

2.1.3 JobReferenceEx

Cada instancia de esta clase representa cada uno de los trabajos existentes en una cola. Esta clase es retornada por el método de obtención del trabajo, GetJob.

La clase JobReferenceEx está definida del siguiente modo:

public class JobReferenceEx

{

public int id;

public string idQueue;

public string owner;

public string computerName;

Página 7 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

public int originalJobId;

public string jobTitle;

public DateTime time;

public byte[] blob;

public bool processed;

public string JobMetadata;

}

Miembros:

id: Identificador del trabajo.

idQueue: Identifica a la cola en la que se encuentra almacenado el trabajo de firma.

owner: Cuenta de usuario que figura como propietario del trabajo (en formato SAM: dominio\usuario). Un trabajo sólo puede ser consultado/firmado/administrado por su propietario o por los miembros del grupo de administradores de SQS (SealSignSQS Admins).

computerName: Nombre del equipo desde el que se añadió el trabajo a la cola.

originalJobId: Identificador del trabajo en la cola de impresión de la impresora virtual. Este identificador sólo tiene sentido si el trabajo se añadió a la cola imprimiendo el documento a través de la impresora virtual.

jobTitle: Título del trabajo de firma.

time: Fecha y hora de la última modificación realizada sobre el trabajo. Contiene la fecha y hora de creación del trabajo o la fecha y hora de la última firma.

blob: Array de bytes del documento a tratar en el trabajo actual.

processed: Booleano que indica si el documento ya ha sido firmado (true) o aún está pendiente de firma (false).

JobMetadata: Cadena de caracteres asociada al documento que se pasará al signature provider. Se trata de un valor libre que tiene sentido sólo entre los dos extremos, es decir, el proceso que añade el trabajo a la cola especifica un valor que será interpretado por el signature provider desarrollado a tal efecto. Es, por tanto, un método para pasar valores de manera transparente entre un cliente de SQS y un proveedor de firma personalizado.

2.1.4 STUButtonDefinition

Clase para la definición del área que se tomará como botón en una tableta Wacom STU. Estos valores sólo tienen sentido en caso de que el cliente de SQS que se vaya a usar sea el cliente Windows y la tableta con la que se vaya a firmar sea una de las Wacom STU soportadas por SealSign.

La clase STUButtonDefinition está definida del siguiente modo:

public class STUButtonDefinition

{

public int x1;

public int y1;

public int x2;

public int y2;

}

Página 8 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Miembros:

x1: Coordenada x de la esquina superior izquierda del botón expresada en pixeles. Su valor puede variar en función de la resolución de la tableta usada.

y1: Coordenada y de la esquina superior izquierda del botón expresada en pixeles. Su valor puede variar en función de la resolución de la tableta usada.

x2: Coordenada x de la esquina inferior derecha del botón expresada en pixeles. Su valor puede variar en función de la resolución de la tableta usada.

y2: Coordenada y de la esquina inferior derecha del botón expresada en pixeles. Su valor puede variar en función de la resolución de la tableta usada.

2.1.5 STUConfiguration

Clase para la definición del comportamiento de firma en una tableta Wacom STU. Estos valores sólo tienen sentido en caso de que el cliente de SQS que se vaya a usar sea el cliente Windows y la tableta con la que se vaya a firmar sea una de las Wacom STU soportadas por SealSign.

La clase STUConfiguration está definida del siguiente modo:

public class STUConfiguration

{

public byte[] image;

public STUButtonDefinition OKButton;

public STUButtonDefinition CancelButton;

}

Miembros:

image: Array de bytes de la imagen que será mostrada en la pantalla de la tableta Wacom STU.

OKButton: Definición del área de la tableta que será tomada como botón de Aceptar.

CancelButton: Definición del área de la tableta que será tomada como botón de Cancelar.

2.1.6 SignatureClientBehaviour

Clase para la definición del comportamiento del proceso del cliente de SQS durante la firma de un documento. Los objetos de esta clase serán devueltos por los signature providers personalizados para indicar al cliente de SQS como comportarse ante el proceso de firma de un documento.

La clase SignatureClientBehaviour está definida del siguiente modo:

public class SignatureClientBehaviour

{

public string uri;

public string signatureId;

public string signatureAccount;

public string providerParameter;

public string signatureWindowTitle;

public STUConfiguration stuConfiguration;

}

Página 9 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Miembros:

uri: Identificador URI del documento a tratar. Este campo sirve como un identificador interno entre el cliente y el signature provider de firma.

signatureId: Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

signatureAccount: Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

providerParameter: Cadena de texto que permite el paso de información entre el cliente y el proveedor de firma para personalizar su comportamiento.

signatureWindowTitle: Título de la ventana de firma que aparecerá en el cliente de SQS.

stuConfiguration: Configuración de la tableta Wacom STU para el proceso de firma del trabajo actual.

2.1.7 Job

Define tanto el trabajo a tratar como el comportamiento que deberá tener el cliente de SQS para llevar a cabo la firma del documento asociado.

La clase Job está definida del siguiente modo:

public class Job

{

public SignatureClientBehaviour[] signatureClientBehaviour;

public JobReferenceEx jobReferenceEx;

}

Miembros:

signatureClientBehaviour: Array de comportamientos de firma. Se devolverá un objeto por cada una de las firmas que se deban incluir en el documento.

jobReferenceEx: Información del trabajo de firma.

Página 10 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

3 Servicio de colas de Firma Biométrica SOAP 1.1

El servicio ISignatureQueueServiceBasic.svc de SealSign SQS expone los métodos necesarios para la gestión de colas y trabajos de firma biométrica a través de un servicio web SOAP 1.1 (basicHttpBinding).

El servicio de colas expone diversos métodos que permiten administrar tanto los trabajos como las propias colas de firma.

En los siguientes apartados, se describen tanto el interfaz de este método así como las clases y tipos relacionados con él.

3.1 Métodos

3.1.1 AddQueue

Descripción Permite crear una nueva cola de firma biométrica.

Sintaxis public int AddQueue (

string name

);

Parámetros de entrada

name: Nombre que se dará a la cola.

Retorno Devuelve un entero con el identificador interno asociado a la cola.

Comentarios Sólo los miembros del grupo de administradores de SQS (SealSignSQS Admins) pueden invocar este método.

3.1.2 RemoveQueue

Descripción Permite eliminar una cola de firma biométrica existente.

Sintaxis public void RemoveQueue (

int id

);

Parámetros de entrada

id: Identificador interno de la cola que se desea borrar.

Comentarios Sólo los miembros del grupo de administradores de SQS (SealSignSQS Admins) pueden invocar este método.

Página 11 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

3.1.3 GetQueueReferences

Descripción Retorna la lista de colas existentes en el servidor de SQS.

Sintaxis public QueueReference[] GetQueueReferences();

Devuelve Devuelve un array de objetos de la clase QueueReference, cada uno de ellos con la información de una cola de trabajo existente en el servidor.

3.1.4 AddJob

Descripción Permite añadir un trabajo a una cola de firma biométrica.

Sintaxis

public int AddJob (

string queueName,

int originalJobId,

string jobTitle,

byte[] blob,

string jobMetadata

);

Parámetros de entrada

queueName: Nombre de la cola a la que se añadirá el trabajo.

originalJobId: Identificador del trabajo de impresión.

jobTitle: Título del trabajo de firma.

blob: Array de bytes del documento que debe ser firmado.

jobMetadata: Metadatos asociados al documento.

Retorno Devuelve un entero con el identificador asociado al nuevo trabajo de firma.

Comentarios

Suministrando el nombre de la cola y el array de bytes del documento que se desea firmar, este método añade un nuevo trabajo a la cola y lo deja en estado pendiente de firma.

Es posible añadir información asociada al documento en el campo jobMetadata. El valor de este campo llegará tal y como se guarde en la cola tanto al signature provider como al proceso cliente que posteriormente realice la firma del documento. Se trata, por tanto, de un método para pasar información entre los distintos módulos implicados en el sistema de colas.

3.1.5 SetProcessedJob

Descripción Cambia el estado de un trabajo de pendiente de firma a procesado.

Sintaxis

public void SetProcessedJob (

int id, byte[] document

);

Página 12 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Parámetros de entrada

id: Identificador del trabajo de firma.

document: Array de bytes del documento firmado.

Comentarios

Los trabajos en una cola de firma pueden estar en dos estados: pendiente de firma o procesado (firmado).

Aunque el estado del documento se actualiza automáticamente cuando se lleva a cabo la última de las firmas, es posible forzar el cambio de estado invocando a este método.

El parámetro document es opcional. Si se pasa un array de bytes, este se almacenará como documento firmado en la cola. En caso de pasar un valor nulo, el documento ya existente quedará como documento firmado.

Sólo el propietario del trabajo o los miembros del grupo de administradores de SQS podrán invocar a este método.

3.1.6 RemoveJob

Descripción Elimina un trabajo de una cola.

Sintaxis public void RemoveJob (

int id );

Parámetros de entrada

id: Identificador del trabajo de firma.

Comentarios Sólo el propietario del trabajo o los miembros del grupo de administradores de SQS podrán invocar a este método.

3.1.7 ChangeJobOwner

Descripción Permite cambiar la cuenta del usuario propietario del trabajo

Sintaxis

public void ChangeJobOwner (

int id, string newOwner

);

Parámetros de entrada

id: Identificador del trabajo de firma.

newOwner: Cuenta de usuario del nuevo propietario.

Comentarios

Sólo el propietario del trabajo o los miembros del grupo de administradores de SQS podrán invocar a este método.

La cuenta del nuevo propietario se establecerá en formato SAMAccountName (Dominio\Usuario).

Página 13 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

3.1.8 GetPendingJobs

Descripción Obtiene la lista de trabajos pendientes de firma para una o varias colas de trabajo.

Sintaxis

public JobReference[] GetPendingJobs (

QueueReference[] queueReferences,

string owner, string computerName

);

Parámetros de entrada

queueReferences: Array de colas que se consultarán.

owner: Cuenta del propietario de los trabajos.

computerName: Equipo para la consulta.

Devuelve Retorna un array de JobReference con la lista de trabajos en estado pendiente.

Comentarios

Es posible consultar una o varias colas al mismo tiempo especificando un array de uno o varios objetos de la clase QueueReference. Si se especifica un valor nulo en el parámetro queueReferences, se consultarán todas las colas existentes en el servidor.

Si el usuario que invoca este método es un usuario administrador, es posible realizar un filtro por propietario o por equipo especificando el valor de la cuenta en los parámetros owner o computerName.

Si el usuario no tiene privilegios de administrador, sólo se retornarán aquellos trabajos de los que sea propietario.

3.1.9 GetProcessedJobs

Descripción Obtiene la lista de trabajos procesados para una o varias colas de trabajo.

Sintaxis

public JobReference[] GetProcessedJobs (

QueueReference[] queueReferences,

string owner, string computerName

);

Parámetros de entrada

queueReferences: Array de colas que se consultarán.

owner: Cuenta del propietario de los trabajos.

computerName: Equipo para la consulta.

Devuelve Retorna un array de JobReference con la lista de trabajos en estado pendiente.

Comentarios Es posible consultar una o varias colas al mismo tiempo especificando un array de uno o varios objetos de la clase QueueReference. Si se especifica un valor nulo en

Página 14 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

el parámetro queueReferences, se consultarán todas las colas existentes en el servidor.

Si el usuario que invoca este método es un usuario administrador, es posible realizar un filtro por propietario o por equipo especificando el valor de la cuenta en los parámetros owner o computerName.

Si el usuario no tiene privilegios de administrador, sólo se retornarán aquellos trabajos de los él que sea propietario.

3.1.10 GetJob

Descripción Obtiene la información de un trabajo existe en una cola de firma.

Sintaxis public Job GetJob (

int id );

Parámetros de entrada

id: Identificador del trabajo.

Devuelve Retorna un objeto de tipo Job con la información del trabajo de firma.

Comentarios Sólo el propietario del trabajo o los miembros del grupo de administradores de SQS podrán invocar a este método.

Página 15 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

4 Firma Distribuida en Cliente

Dado que la firma biométrica requiere de la existencia de un dispositivo de captura de firma manuscrita, podría pensarse que la totalidad del proceso ha de realizarse en el equipo cliente. Esta arquitectura basada únicamente en equipos cliente tiene diversos inconvenientes como la capacidad de proceso y la heterogeneidad de los mismos.

Una de las ventajas que proporciona SealSign BSS es la firma distribuida, que permite resolver el escenario planteado de una forma muy flexible y sencilla. La firma distribuida consiste en realizar todo el proceso de firma en el lado del servidor salvo la captura de los parámetros de firma biométrica que se produce en el lado del cliente, donde está el dispositivo de captura. De esta forma se unifica y optimiza la obtención de elementos externos y se reduce drásticamente la información intercambiada.

Este proceso se realiza de forma segura en SealSign BSS de forma que se asegura la integridad de los datos en dos niveles:

Nivel de aplicación cifrando la información intercambiada.

Nivel de infraestructura, permitiendo utilizar las tecnologías subyacentes de comunicaciones (SSL, autenticación, etc.).

Una ventaja adicional de este modelo es la simplicidad del lado del cliente, que permite de forma sencilla integrar multitud de tecnologías heterogéneas, como distintos sistemas operativos (Windows, Linux, etc.) y distintos dispositivos (PCs, móviles, tabletas, etc.).

4.1 Arquitectura de la Firma Distribuida de SealSign SQS

SealSign SQS se comporta como un servicio de frontend dentro de la arquitectura de firma distribuida de SealSign BSS. Esta arquitectura es proporcionada principalmente por tres componentes:

Imagen 01: Arquitectura de SealSign SQS.

1. Servicio de backend de SealSign BSS (BiometricSignatureServiceBasic.svc para entornos SOAP 1.1 o BiometricSignatureService.svc): Este servicio es el responsable de ejecutar el proceso de firma sobre el documento solicitado.

Entidades Externas SealSign SQS/BSS Server Aplicación Cliente

Clientes Windows SealSignBSSPanel

Frontend (SQS) SignatureQueueSer

viceBasic

Backend (BSS) BiometricSignature

Service

SignatureProvider

MOSS SignatureProvider

Entidades Certificadoras

SAP

Clientes IOS SealSignBSSPanelView

Clientes Android SealSignBSSPanel

Página 16 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2. Servicio de frontend de SealSign SQS (SignatureQueueServiceBasic.svc para entornos SOAP 1.1 o SignatureQueueService.svc): Este servicio se encarga de orquestar la comunicación entre el cliente, la cola de trabajo donde se encuentra el documento y el servicio de backend. Es posible, además, modificar tanto los parámetros de firma como el comportamiento de la tableta y el almacenamiento del documento firmado en repositorios externos. Esto puede hacerse mediante el desarrollo y la configuración de un tipo de add-in denominado Signature providers.

3. Componente cliente de firma específico de cada plataforma: Se encarga de componer los datos biométricos de la firma manuscrita que serán incorporados al documento que está siendo firmado. En la plataforma SealSign BSS se incluyen versiones del componente para aplicaciones .NET, Java, Android e iOS.

Para más información sobre la arquitectura de firma distribuida de SealSign BSS se puede consultar la guía de referencia de servicios web de SealSign BSS.

Página 17 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5 Servicio de Firma Distribuida de SQS

En este apartado se describe el servicio frontal de colas de SQS, encargado de la orquestación de todos los componentes que intervienen en el proceso de firma biométrica de los trabajos encolados.

El servicio de colas de SQS permite integrar la firma biométrica de documentos residentes en colas de trabajo, así como el almacenamiento en repositorios externos, de forma transparente a los clientes. El acceso a los repositorios, los parámetros de firma y la definición del comportamiento del dispositivo de captura, se resuelve mediante un sistema de componentes instalables o plug-in que pueden ser incorporados al servicio de forma sencilla.

Estos proveedores de firma pueden ser desarrollados tanto por Eleven Paths como por cualquier otra empresa para facilitar la integración de repositorios. Los componentes deben desarrollarse en .NET y deben cumplir el interfaz ISignatureProvider.

5.1 Interfaz ISignatureProvider

El interfaz de acceso de definición de parámetros de firma, consta de tres métodos que resuelven la definición del comportamiento del proceso de captura, la obtención de los parámetros de firma biométrica y el posible almacenamiento del documento firmado en un repositorio externo:

using SealSignDSSTypes;

using SealSignBSSTypes;

using SealSignSQSTypes;

namespace SealSignSQSService

{

interface ISignatureProvider

{

SignatureClientBehaviour[] GetClientBehaviour(

int originalJobId, string jobTitle,

string jobMetadata,

byte[] document);

void GetSignatureParameters(

int signatureIndex,

string uri,

string providerParameter,

int originalJobId,

string jobTitle,

string jobMetadata,

byte[] document,

out SignatureProfile signatureProfile,

out BiometricSignatureType biometricSignatureType,

out BiometricSignatureFlags biometricOptions,

out BiometricSignatureParameters biometricParameters,

out SignatureFlags options,

out SignatureParameters parameters,

out byte[] detachedSignature);

void SetSignedDocument(int signatureIndex,

string uri,

string providerParameter,

int originalJobId,

string jobTitle,

string jobMetadata,

byte[] signedDocument);

}

}

Página 18 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Cuando el cliente de SealSign SQS invoque a GetJob, el servicio invocará al método GetClientBehaviour del signature provider. Este método retornará un array de SignatureClientBehaviour con un elemento por cada una de las firmas que deban ser solicitadas así como el comportamiento de la tableta de captura utilizada (título de la ventana de captura, imagen de fondo, etc…).

En el inicio de cada una de las firmas, SealSign SQS llamará al método GetSignatureParameters del signature provider para que retorne los parámetros de firma biométrica (tipo de firma, posición del grafo, etc…) correspondiente a la firma cuyo número se indica en el parámetro signatureIndex. Los parámetros uri y providerParameter se utilizarán para pasar información desde el cliente de firma al signature provider personalizado. En ningún caso, serán utilizados por el propio servicio de colas. El parámetro uri puede ser usado como un identificador interno del documento (por ejemplo, para identificar el documento dentro de un repositorio). El parámetro providerParameter puede ser utilizado para pasar información compleja (por ejemplo, mediante un xml) desde el cliente de SQS al signature provider.

Al finalizar cada una de las firmas, SealSign SQS llamará al método SetSignedDocument del signature provider con el documento firmado. En este punto, el proveedor de firma puede almacenar el documento firmado en un repositorio externo.

5.2 Registro de Proveedores de Firma

Los proveedores de firma se registran a nivel de cola de trabajo, es decir, es posible registrar un proveedor de firma distinto para cada cola, definiendo, por tanto, un comportamiento del proceso de firma distinto en función de la cola tratada.

Para registrar un proveedor de firma personalizado en el sistema basta con agregar a la sección <SignatureProviders> del fichero SignatureProviders.config de SQS, una clave con el identificador del protocolo y la declaración del assembly que lo implementa. Dicho assembly puede residir tanto en la ruta de búsqueda por defecto como en la GAC. Por ejemplo:

<add key="queue1" value="SampleSignatureProvider, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=7292d37ec3154539"" />

5.3 DefaultSignatureProvider

Durante el proceso de instalación de SealSign SQS, se instala también un proveedor de firma por defecto que será aplicado a todas aquellas colas a las que no se haya configurado un signature provider.

Este proveedor de firma por defecto permite configurar uno o varios perfiles de firma biométrica. Cada uno de estos perfiles incluye:

Un filtro: Texto que, al ser encontrado dentro del documento, forzará la aplicación del perfil de firma para dicho documento

Un array de definición del proceso de captura: Para cada una de las firmas que haya que solicitar, se definirán valores como el título de la ventana, imagen de fondo de la tableta, etc…

Los parámetros de firma biométrica: Tipo de firma, posición, tamaño del grafo….

Página 19 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5.3.1 Configuración del DefaultSignatureProvider

Todas las configuraciones del proveedor de firma por defecto se establecen editando el fichero DefaultSignatureProvider.dll.xml que se encuentra en la carpeta bin, bajo la carpeta de instalación del servicio de SQS.

El contenido inicial de este fichero es el siguiente:

<?xml version="1.0"?>

<DefaultProviderConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<signatureProfiles>

<Profile>

<profileName>Default Profile</profileName>

<signatureConfiguration>

<SignatureConfiguration>

<signatureClientBehaviour>

<signatureId />

<signatureAccount />

<providerParameter />

<signatureWindowTitle>Firme Aquí . . .</signatureWindowTitle>

</signatureClientBehaviour>

<signatureProfile>PDF</signatureProfile>

<biometricSignatureType>Default</biometricSignatureType>

<biometricOptions>Default</biometricOptions>

<options>Default</options>

</SignatureConfiguration>

</signatureConfiguration>

</Profile>

</signatureProfiles>

</DefaultProviderConfiguration>

Se pueden añadir tantos nodos <Profile> como tipos de firma/documentos se quieran firmar. Dentro de cada uno, además del nombre del profile, se puede añadir un nodo <filterText> con el texto que servirá de filtro para la aplicación de este perfil al documento. Si el texto configurado se encuentra dentro del documento, se le aplicarán las configuraciones de firma establecidas dentro del nodo <signatureConfiguration>.

Dentro del nodo <signatureConfiguration> de un perfil, se añadirán tantos nodos <SignatureConfiguration> como firmas requiera un tipo de documento.

Dentro de este nodo, se pueden configurar los siguientes elementos, que coincidirán con la serialización en formato XML con su correspondiente clase:

ELEMENTO CLASE

<signatureClientBehaviour> SignatureClientBehaviour

<signatureProfile> SignatureProfile

<biometricSignatureType> BiometricSignatureType

<biometricOptions> BiometricSignatureFlags

<biometricParameters> BiometricSignatureParameters

<options> SignatureFlags

<parameters> SignatureParameters.

Página 20 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Por último, al mismo nivel que los <signatureProfiles>, se puede crear un nodo <otherParameters> con la siguiente estructura:

<otherParameters>

<STUDefaultConfig>

<ImagePath>C:\wacom\imagen_de_fondo.bmp</ImagePath>

<OKButton>

<x1>491</x1>

<y1>20</y1>

<x2>620</x2>

<y2>70</y2>

</OKButton>

<CancelButton>

<x1>21</x1>

<y1>20</y1>

<x2>148</x2>

<y2>70</y2>

</CancelButton>

</STUDefaultConfig>

</otherParameters>

Con este nodo, se pueden configurar los valores por defecto retornados por el método GetClientBehaviour en cuanto a la definición de la imagen de fondo y al área de los botones Aceptar y Cancelar para tabletas Wacom STU.

Un ejemplo de fichero de configuración completo sería el siguiente:

<?xml version="1.0"?>

<DefaultProviderConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<signatureProfiles>

<Profile>

<profileName>Default Profile</profileName>

<signatureConfiguration>

<SignatureConfiguration>

<signatureClientBehaviour>

<signatureId />

<signatureAccount />

<providerParameter />

<signatureWindowTitle>Firme Aquí . . .</signatureWindowTitle>

</signatureClientBehaviour>

<signatureProfile>PDF</signatureProfile>

<biometricSignatureType>Default</biometricSignatureType>

<biometricOptions>Default</biometricOptions>

<options>Default</options>

</SignatureConfiguration>

</signatureConfiguration>

</Profile>

<Profile>

Página 21 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

<profileName>Perfil 1</profileName>

<filterText>Contrato de Trabajo</filterText>

<signatureConfiguration>

<SignatureConfiguration>

<signatureClientBehaviour>

<signatureId />

<signatureAccount />

<providerParameter />

<signatureWindowTitle>Firma del trabajador . . .</signatureWindowTitle>

</signatureClientBehaviour>

<signatureProfile>PDF</signatureProfile>

<biometricSignatureType>Default</biometricSignatureType>

<biometricOptions>Default</biometricOptions>

<biometricParameters>

<imageParameters>

<attachmentName />

<imageTokenText />

<autoSize>false</autoSize>

<height>55</height>

<width>90</width>

<offsetX>120</offsetX>

<offsetY>40</offsetY>

<signatureVisible>true</signatureVisible>

<onPage>1</onPage>

<onAllPages>false</onAllPages>

<onLastPage>true</onLastPage>

<pageOffset>0</pageOffset>

<rotate>0</rotate>

</imageParameters>

</biometricParameters>

<options>Default</options>

</SignatureConfiguration>

</signatureConfiguration>

<signatureClientBehaviour>

<signatureId />

<signatureAccount />

<providerParameter />

<signatureWindowTitle>Firma de la empresa . . .</signatureWindowTitle>

</signatureClientBehaviour>

<signatureProfile>PDF</signatureProfile>

<biometricSignatureType>Default</biometricSignatureType>

<biometricOptions>Default</biometricOptions>

Página 22 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

<biometricParameters>

<imageParameters>

<attachmentName />

<imageTokenText />

<autoSize>false</autoSize>

<height>55</height>

<width>90</width>

<offsetX>220</offsetX>

<offsetY>40</offsetY>

<signatureVisible>true</signatureVisible>

<onPage>1</onPage>

<onAllPages>false</onAllPages>

<onLastPage>true</onLastPage>

<pageOffset>0</pageOffset>

<rotate>0</rotate>

</imageParameters>

</biometricParameters>

<options>Default</options>

</SignatureConfiguration>

</signatureConfiguration>

</Profile>

</signatureProfiles>

<otherParameters>

<STUDefaultConfig>

<ImagePath>C:\inetpub\wwwroot\SealSignSQSService\bin\wacom.bmp</ImagePath>

<OKButton>

<x1>491</x1>

<y1>20</y1>

<x2>620</x2>

<y2>70</y2>

</OKButton>

<CancelButton>

<x1>21</x1>

<y1>20</y1>

<x2>148</x2>

<y2>70</y2>

</CancelButton>

</STUDefaultConfig>

</otherParameters>

</DefaultProviderConfiguration>

Página 23 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5.4 Métodos

5.4.1 BeginBiometricSignatureProvider

Descripción Inicia un proceso de firma distribuida utilizando el servicio de SealSign SQS.

Sintaxis

BiometricSignatureContext BeginBiometricSignatureProvider(

int idDocument,

int signatureIndex,

string queueName,

string biometricId,

string biometricAccount,

string uri,

string providerParameter,

byte[] document);

Parámetros de entrada

idDocument: Identificador del documento en la cola de trabajo.

signatureIndex: Índice de la firma que se va a incluir.

queueName: Nombre de la cola de trabajo en el que se encuentra almacenado el documento.

biometricId: Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricAccount: Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

uri: Identificador URI del documento. Más información sobre este valor en la descripción del infertaz ISignatureProvider.

providerParameter: Cadena de texto que permite el paso de información entre el cliente y el proveedor de firma para personalizar su comportamiento. . Más información sobre este valor en la descripción del infertaz ISignatureProvider.

document: Array de bytes con el contenido del documento que se quiera firmar. Si se pasa un valor nulo, el documento se obtiene de la cola de trabajo mediante el campo idDocument.

Retorno

Devuelve un objeto de la clase BiometricSignatureContext con el identificador de la transacción de firma y un array de bytes con el contexto de firma distribuida para ser tratado en el cliente. Para obtener más información sobre esta clase, se puede consultar la guía de referencia de servicios web de SealSign BSS.

Comentarios

La localización del documento a firmar se puede realizar de dos modos: pasando un identificador de documento en el parámetro idDocument o suministrando el array de bytes del documento en el parámetro document. Si el campo document contiene un valor, el parámetro idDocument es ignorado. En caso contrario, se utiliza el valor de idDocument para localizar el documento en la cola de trabajo.

En un documento a firmar puede ser necesario añadir más de una firma. En el campo signatureIndex se especificará el número de orden, empezando por cero, de la firma que se va a incluir en el documento.

Página 24 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5.4.2 EndBiometricSignatureProvider

Descripción Completa un proceso de firma distribuida que haya sido iniciado mediante el método BeginBiometricSignatureProvider.

Sintaxis

void EndBiometricSignatureProvider(Guid instance,

byte[] biometricState, int idDocument,

int signatureIndex,

string queueName,

string uri,

string providerParameter,

out byte[] signedDocument);

Parámetros de entrada

instance: Identificador de la transacción de firma retornado por el método beginBiometricSignatureProvider.

biometricState: Array de bytes del estado de firma distribuida después de haber sido procesado por el componente AsyncStateManager.

idDocument: Identificador del documento en la cola de trabajo.

signatureIndex: Índice de la firma que se va a incluir.

queueName: Nombre de la cola de trabajo en el que se encuentra almacenado el documento.

uri: Identificador URI del documento. Más información sobre este valor en la descripción del infertaz ISignatureProvider.

providerParameter: Cadena de texto que permite el paso de información entre el cliente y el proveedor de firma para personalizar su comportamiento. . Más información sobre este valor en la descripción del inerfaz ISignatureProvider.

Parámetros de salida

signedDocument: Array de bytes con el contenido del documento una vez que haya sido firmado.

Página 25 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

6 Recursos

Para información acerca de los distintos servicios de SealSign puede accederse a esta dirección: https://www.elevenpaths.com/es/tecnologia/sealsign/index.html

Además en el blog de ElevenPaths es posible encontrar artículos interesantes y novedades acerca de este producto.

Puede encontrarse más información acerca de los productos de Eleven Paths en YouTube, en Vimeo y en Slideshare.

Página 26 de 26

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

La información contenida en el presente documento es propiedad de Telefónica Digital Identity & Privacy, S.L.U. (“TDI&P”) y/o de cualquier otra entidad dentro del Grupo Telefónica o sus licenciantes. TDI&P y/o cualquier compañía del Grupo Telefónica o los licenciantes de TDI&P se reservan todos los derechos de propiedad industrial e intelectual (incluida cualquier patente o copyright) que se deriven o recaigan sobre este documento, incluidos los derechos de diseño, producción, reproducción, uso y venta del mismo, salvo en el supuesto de que dichos derechos sean expresamente conferidos a terceros por escrito. La información contenida en el presente documento podrá ser objeto de modificación en cualquier momento sin necesidad de previo aviso.

La información contenida en el presente documento no podrá ser ni parcial ni totalmente copiada, distribuida, adaptada o reproducida en ningún soporte sin que medie el previo consentimiento por escrito por parte de TDI&P.

El presente documento tiene como único objetivo servir de soporte a su lector en el uso del producto o servicio descrito en el mismo. El lector se compromete y queda obligado a usar la información contenida en el mismo para su propio uso y no para ningún otro.

TDI&P no será responsable de ninguna pérdida o daño que se derive del uso de la información contenida en el presente documento o de cualquier error u omisión del documento o por el uso incorrecto del servicio o producto. El uso del producto o servicio descrito en el presente documento se regulará de acuerdo con lo establecido en los términos y condiciones aceptados por el usuario del mismo para su uso.

TDI&P y sus marcas (así como cualquier marca perteneciente al Grupo Telefónica) son marcas registradas. TDI&P y sus filiales se reservan todo los derechos sobre las mismas.

PUBLICACIÓN:

Junio 2015

En ElevenPaths pensamos de forma diferente cuando hablamos de seguridad. Liderados por Chema Alonso, somos un equipo de expertos con inquietud para replantearnos la industria y gran experiencia y conocimiento en el sector de la seguridad. Dedicamos toda nuestra experiencia y esfuerzos en crear productos innovadores para que la vida digital sea más segura para todos.

La evolución de las amenazas de seguridad en la tecnología es cada vez más rápida y constante. Por eso, desde junio de 2013, nos hemos constituido como una start-up dentro de Telefónica para trabajar de forma ágil y dinámica, y ser capaces de transformar el concepto de seguridad anticipándonos a los futuros problemas que afecten a nuestra identidad, privacidad y disponibilidad online.

Con sede en Madrid, estamos presentes también en Londres, EE.UU, Brasil, Argentina, y Colombia.

TIENES ALGO QUE CONTARNOS, PUEDES HACERLO EN:

elevenpaths.com Blog.elevenpaths.com @ElevenPaths Facebook.com/ElevenPaths YouTube.com/ElevenPaths