- Início
- Playground
Integre em três passos, agora
O caso
Escolher o caso muda só o flow_id do passo 1 e o desfecho que chega no passo 3.
A jornada
O desfecho que chega no passo 3
A linguagem do código
Passo 1 | No seu servidor, com a chave secreta, agora
Seu servidor cria a sessão
A chave secreta fica no seu servidor. O
reference_idé a chave de idempotência: repetir o pedido com o mesmo valor, enquanto a sessão vive, devolve a mesma sessão em vez de criar outra. Da resposta, só oidvai para a sua página.Passo 2 | Na sua página, sem segredo, a seguir
Sua página monta o widget
O id da sessão é a única coisa que vai ao navegador. Uma linha monta o widget no contêiner, e ele conduz o titular até o fim.
A sua página <!-- Na SUA pagina. Nenhum segredo aqui: so o id da sessao que o seu servidor recebeu. --> <div id="identidade"></div> <script src="https://api.unifokal.com/dist/widget.global.js" data-session="vs_..." data-container="#identidade" crossorigin="anonymous" ></script>Aqui o titular é de teste e já enviou o documento e a selfie, sem câmera: o widget mostra a tela em que a pessoa termina.
Passo 3 | No seu servidor, no seu endpoint, a seguir
Seu servidor recebe o webhook
A decisão chega ao seu endpoint num POST assinado. Confira a assinatura antes de ler o corpo: o desfecho que vale é este, nunca o do navegador.
O seu endpoint confere a assinatura #!/bin/sh # Na sua maquina: confere se o segredo cadastrado assinou a entrega. E diagnostico; em producao # a conferencia roda no servidor, em Node ou Python. corpo-recebido.json guarda os BYTES CRUS. HEADER='<o valor do X-IDSAAS-Signature que chegou>' T=$(printf '%s' "$HEADER" | tr ',' '\n' | sed -n 's/^t=//p') ESPERADO=$({ printf '%s.' "$T"; cat corpo-recebido.json; } \ | openssl dgst -sha256 -hmac "$UNIFOKAL_WEBHOOK_SECRET" -r | cut -d' ' -f1) # Compara sob um HMAC de chave efemera: o tempo do '=' nao ensina nada sobre a assinatura. CHAVE=$(openssl rand -hex 32) mascara() { printf '%s' "$1" | openssl dgst -sha256 -hmac "$CHAVE" -r | cut -d' ' -f1; } for V1 in $(printf '%s' "$HEADER" | tr ',' '\n' | sed -n 's/^v1=//p'); do [ "$(mascara "$V1")" = "$(mascara "$ESPERADO")" ] && echo "assinatura confere" && exit 0 done echo "assinatura NAO confere"; exit 1
