La firma electrónica remota debe aportar garantías de que el firmante es quien dice ser.

Por tanto, principalmente en sector banca/ seguros y salud, se hace muy relevante autenticar a la persona (firmante / aceptador) antes de permitirle visualizar el documento. En documentos confidenciales, o con datos de carácter personal, es un requisito indispensable que sólo pueda ver el documento la persona interesada.

La autenticación fuerte de firmantes también se denomina autenticación multifactor porque permite aplicar más de un método de autenticación.

Por ejemplo, realizar una solicitud de firma por correo electrónico sería un factor de autenticación, pero realizar una solicitud de firma por correo electrónico que también requiera verificación por SMS serían dos factores de autenticación.

Este documento es define cómo firmar.online resuelve la autenticación de firmantes en procesos de firma remota, dotando a la firma remota de un mayor nivel de seguridad que garantiza que la persona que accede al documento es quien dice ser.

Los métodos de autenticación de firmantes que pueden resultar interesantes serían:

  • Sin autenticación: El interesado accede directamente al documento.
  • Autenticación básica: Antes de visualizar el documento, firmar.online muestra el nombre del firmante, email, teléfono y el identificador
  • Autenticación fuerte mediante OTP: El firmante recibe un mensaje de texto (SMS) con una contraseña de un solo uso (OTP – One Time Password) que debe informar antes de visualizar el documento. Sólo podrá acceder al documento si responde de forma exacta.
  • Autenticación mediante clave de acceso: Para acceder al documento, el firmante debe conocer una cuestión planteada. l visor muestra una pregunta y una caja para que el firmante pueda responder. Por ejemplo, “Por favor, indica tu fecha de nacimiento, los últimos cuatro dígitos de tu móvil, la letra de tu DNI…

Para definir la forma en la que vamos a solicitar la autenticación del firmante, existen dos posibilidades

.- Creación de un nuevo documentSet en base a un flujo predefinido: en este caso, la forma de autenticación se define a nivel de flujo.

.- Creación de un nuevo documentSet mediante los otros métodos de creación de sobres de la API. En este caso, se definirá el parámetro authMode

API REST

El método de autenticación se informa medante el parámetro authMode en la creación de un nuevo documentSet, en la API REST, a nivel de recipient.

Será opcional. Si no se indica nada, la autenticación default de la plataforma para todos los componentes “autenticación básica

Posibles valores del parámetro authMode
00 Sin autenticación. No se muestra la pantalla previa
10 (default) Autenticación Básica: Mostrar datos y check de aceptación
20 Autenticación mediante clave de acceso
40 Autenticación mediante SMS- OTP

Aquí hay una pequeña muestra, pero puedes consultar más ejemplos en la colección de API PUBLICA:

"recipient": 
    {
    "name": {{RecipientName_1}},
    "email": {{RecipientEMail_1}},
    "cardId": {{RecipientCardId_1}},
    "phoneNumber": "{{RecipientPhone_1}},
    "actionType":    30,
    "authType":    40,

Otro ejemplo, para un sobre creados mediante flujo, sólo se debe informar la respuesta esperada.

    "recipients": 
     [
     {
        "name": {{RecipientName_1}},
        "email": {{RecipientEMail_1}},
        "cardId": {{RecipientCardId_1}},
        "phoneNumber": {{RecipientPhoneNumber_1}},
        "id": "string",
        "accessCode": { "response": "Lucas" },

Autenticación fuerte de doble factor

Autenticación mediante OTP – SMS (AuthType 40)

La autenticación mediante OTP (One Time Password) se define mediante el valor AuthType = 40

Recuerda que será obligatorio informar el número de teléfono móvil/celular del interesado.

Autenticación mediante Clave de Acceso (AuthType 20)

La autenticación fuerte del firmante mediante clave de acceso permite autenticar al firmante mediante una clave que el interesado conoce. Por ejemplo, cuales son los seis últimos dígitos de tu contrato de luz.

Para ello se define

  • La pregunta que verá el interesado, antes de acceder a visualizar el documento.
  • La respuesta esperada
  • El formato de la respuesta: el formato se define en forma de expresión regular.

Aquí se puede ver un ejemplo para Postman:

        "actionType": 30,
        "authType": 20,
        "accessCode": 
        {
        "challenge": "Introduce los 6 últimos números de tu contrato",
        "response": "123456" ,
        "format": "\\d{6}"
        }, 

expresiones regulares para el formato del authType 20

Las expresiones regulares nos permiten definir el formato de la respuesta esperada.

Por ejemplo, si queremos que la respuesta sea

  • un código postal para 5 (90807) o 9 números (92064–3404), la expresión regular podría ser \d{5}|\d{5}-\d{4}
  • El formato de teléfono: (111)-222–2222 la expresión regular sería (\d\d\d) \d\d\d-?\d\d\d\d
  • Teléfono de España: [opcional] +34, [opcional] 34 u [opcional] 0034, exactamente 9 números (los espacios y guiones están permitidos), y el primer número debe ser 6 o 7, la expresión sería (+34|0034|34)?[ -](6|7)[ -]([0-9][ -]*){8}

En la siguiente tabla podrás ver las reglas de juego:

Tipos de caracteres
.Cualquier carácter, excepto linea nueva
\w\d\sPalabra, digito, espacio en blanco
\W\D\SNO Palabra, digito, espacio en blanco
[abc]cualquiera de a, b, o c
[^abc]ninguno de a, b, o c
[a-g]
[A-Z]
[0-9]
Letra entre a & g
Letra entre A & Z (cualquier letra mayúscula)
Numérico entre el 0 y el 9 (cualquier numero)
Anclas
^abc$comienzo/ final de una cadena
\b\Blimite de una palabra / no palabra
Caracteres escapados
\.\*\\caracteres especiales
\t\n\rtabulador, salto de línea, retorno de carro
Grupos
(abc)grupo
\1referencia al grupo #1
(?:abc)grupo que no se captura
(?=abc)búsqueda positivo
(?!abc)búsqueda negativa
Cuantificadores y alternancia
a*a+a?0 o más (a), 1 o más (aaaa), 0 o 1 (a)
a{5}a{2,}exactamente 5 (aaaaa) / exactamente 2 (aa)
a{1,3}entre una y tres (aa)
a+?a{2,}?la menor cantidad posible
ab|cd“o” (ab o cd)

Para saber más sobre expresiones regulares, puedes acceder a regexr.com