Biometria Facesign
DocHub
  • Home
  • Guia Rápido de Integração
  • Produtos
    • APP
    • SSO
    • MFA
  • CRM
  • DOCs
  • Recursos
    • Padrão de captura
    • Score biometrico
    • Score de autenticação
    • Prova de vida
    • Documentoscopia
    • Liveness 2D
    • Funcionalidade 1:N
      • Cadastro
      • Match
    • Webhook
      • JSON Web Token (JWT)
    • Redirect
    • Callback
    • Token criptografado
  • Releases
    • Releases
Fornecido por GitBook
Nesta página
  • Guia de Segurança para Webhooks da Facesign (com uso de JWT)
  • Introdução
  • Motivação para o uso de JWT
  • Conceito de JWT
  • Funcionamento do processo
  • Exemplo de webhook enviado
  • Exemplo de validação do JWT (em Python)
  • Elementos que devem ser validados no token
  • Recomendações de segurança
  1. Recursos
  2. Webhook

JSON Web Token (JWT)

Guia de Segurança para Webhooks da Facesign (com uso de JWT)

Introdução

Esta seção descreve o mecanismo de segurança adotado pela Facesign para envio de webhooks, com base na tecnologia JWT (JSON Web Token). O uso do JWT permite garantir a autenticidade das mensagens enviadas, preservar a integridade dos dados e mitigar riscos como falsificação e reutilização de requisições (replay attacks).


Motivação para o uso de JWT

Webhooks são utilizados pela Facesign para notificar sistemas integrados sobre eventos relevantes (por exemplo, a assinatura de um documento). Para assegurar que essas notificações:

  • Sejam provenientes da Facesign,

  • Não tenham sido alteradas durante o trânsito,

  • Não sejam reutilizadas de forma indevida,

é adicionado um token JWT assinado a cada webhook enviado.


Conceito de JWT

O JWT (JSON Web Token) é um padrão de token assinado digitalmente que contém informações relevantes sobre o evento enviado. Ele é composto por três partes:

  • Header: metadados sobre o tipo do token e algoritmo utilizado.

  • Payload: dados do evento, como timestamps, tipo de evento, identificadores.

  • Signature: assinatura digital que garante a integridade do conteúdo.

Esse token funciona como um envelope lacrado: qualquer tentativa de alteração em seu conteúdo invalida a assinatura.


Funcionamento do processo

Emissão do webhook pela Facesign

  1. A Facesign gera um JWT contendo os dados do evento.

  2. O JWT é assinado com uma chave segura.

  3. O webhook é enviado via requisição HTTP, com o JWT incluso no cabeçalho da requisição.

Processamento e validação no sistema receptor

  1. O sistema receptor extrai o JWT da requisição recebida.

  2. O token é validado quanto à origem, assinatura e validade temporal.

  3. Os dados do evento são processados conforme a necessidade da aplicação.


Exemplo de webhook enviado

POST /seu-endpoint HTTP/1.1
Host: suaempresa.com
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json

{
  "event": "document.signed",
  "data": {
    "documentId": "abc123",
    "signedAt": "2025-04-17T12:00:00Z"
  }
}

Exemplo de validação do JWT (em Python)

import jwt

# Chave secreta fornecida pela Facesign
FACESIGN_SECRET = "sua_chave_secreta_facesign"

# Token recebido
token = "<JWT_RECEBIDO_NO_HEADER>"

try:
    payload = jwt.decode(token, FACESIGN_SECRET, algorithms=["HS256"], audience="suaempresa.com")
    print("Webhook válido:", payload)
except jwt.ExpiredSignatureError:
    print("Erro: Token expirado.")
except jwt.InvalidTokenError:
    print("Erro: Token inválido.")

Elementos que devem ser validados no token

  • iss: Confirma que o token foi emitido pela Facesign.

  • aud: Garante que o token é destinado à aplicação correta.

  • iat e exp: Verificam a validade temporal do token.

  • jti: Identificador único do token, útil para evitar reprocessamento de mensagens.

Recomendações de segurança

  • Utilização de HTTPS: O endpoint de recebimento de webhooks deve operar obrigatoriamente sob HTTPS, garantindo a proteção dos dados em trânsito.

  • Expiração de tokens: Os tokens emitidos possuem tempo de validade reduzido. É essencial que a verificação de expiração seja implementada.

  • Mitigação de replay attacks: Recomenda-se armazenar temporariamente os valores de jti dos tokens já processados, de forma a evitar a execução repetida de um mesmo evento.

  • Proteção da chave secreta: A chave utilizada para verificação da assinatura JWT deve ser armazenada de forma segura, sem exposição pública ou em repositórios versionados.

AnteriorWebhookPróximoRedirect

Atualizado há 22 dias