Segurança e LGPD

Objetivo

Garantir que a integração siga boas práticas de segurança e esteja em conformidade com a LGPD.

Princípios

Princípio Aplicação
Minimização de dados O cidadão revela apenas a credencial ECACredential — o campo isOver18 é derivado pelo Verify Service sem expor data de nascimento ou outros dados pessoais
Finalidade Use o resultado apenas para controle de acesso por idade
Não armazenamento Não armazene a credencial do cidadão
Transparência Informe ao usuário o que está sendo verificado

Checklist de Segurança

INJI Verify Service

Aplicação React

Infraestrutura

onVPProcessed — Segurança

O callback onVPProcessed entrega o resultado diretamente no frontend:

// Frontend
onVPProcessed={(results) => {
  const ok = results.some((r) => r.vcStatus === 'SUCCESS');
  if (ok) { /* liberar acesso */ }
}}
// Backend (Node/Express)
app.get('/api/verificacao/:transactionId', async (req, res) => {
  const { transactionId } = req.params;
  const result = await fetch(
    `<VERIFY_BASE_URL>/v1/verify/vp-result/${transactionId}`
  );
  const data = await result.json();
  const verified = data.vcResults?.some(r => r.vcStatus === 'SUCCESS') ?? false;
  res.json({ verified });
});

DID e Keystore

O INJI Verify Service se identifica com um DID Web e assina requisições com um keystore PKCS12.

  • O DID (did:web:seu-dominio.com.br:v1:verify) deve resolver para o seu domínio público
  • O keystore (test.p12) é usado para assinar as authorization requests
  • Em produção, gere um keystore próprio com chave forte
Aviso

O test.p12 incluído no INJI é para desenvolvimento apenas. Gere um keystore próprio para produção.

Consentimento do Usuário

Antes de iniciar a verificação, informe ao usuário:

  • O que está sendo verificado (idade >= 18)
  • Quem é o verificador (sua organização)
  • Que nenhum dado pessoal além de isOver18 é compartilhado
  • Que o cidadão autoriza ativamente na Carteira Digital

Próximo passo

Veja como levar para Produção e Operação.