Eventos de Assinatura
Cada notificação que enviamos para seu endpoint é assinada. Fazemos isso incluindo um cabeçalho nomeado "Jump-Signature"em cada evento que enviamos. Isso permite que você verifique e garanta que o evento foi enviado pela Jump e não por um terceiro.
O "Jump-Signature"cabeçalho contém a timestampe uma ou mais assinaturas. O timestampé prefixado por t=e cada assinatura é prefixada por um esquema. Os esquemas começam com vseguido por um integer. Atualmente, há apenas um esquema de assinatura que é v1.
Exemplo do Header Jump-Signature:
Jump-Signature: t=1681235417000,v1=b9ffafcd16416bd11e36f877c2d7ccc71633d174f8245abc49fc2aef7e6633c8As assinaturas são geradas usando um código de autenticação baseado em mensagem hash (HMAC)com SHA-256. Para evitar ataques de downgrade, você deve ignorar todos os esquemas não v1.
Como validar a assinatura
Etapa 1: Extraia o carimbo de data/hora e a assinatura do cabeçalho
Divida o cabeçalho usando o caractere como separador para obter a lista de elementos. Uma vez feito isso, faça outra divisão usando o =caractere como separador, para obter o prefixo e o valor.
O valor obtido do tprefixo corresponde ao timestamp e o v1corresponde à assinatura. Você pode descartar outros valores.
Etapa 2: Prepare a string para comparar assinaturas
Você deve concatenar essas informações:
O carimbo de data/hora (como
string)O personagem
.A carga útil JSON (corpo da solicitação, no
stringformato)
Calcule HMACcom a SHA256função hash. Use o segredo (veja qual é o seu segredo clicando aqui )
Exemplo em PHP
<?php
// This secret is not the secret of the authentication token, it is the UID
$secret = 'my-secret';
// This is the "t" value received on JumpPagamentos-Signature header
$timestamp = 1681235417000;
$requestPayload = [
'callback' => true,
'value' => 'value-field'
];
$jsonPayload = json_encode($requestPayload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$paramsSignature = "{$timestamp}.{$jsonPayload}";
echo hash_hmac('sha256', $paramsSignature, $secret);
// Output: b9ffafcd16416bd11e36f877c2d7ccc71633d174f8245abc49fc2aef7e6633c8Etapa 3: Compare as assinaturas
Compare a assinatura enviada pela Jump no Cabeçalho com a assinatura que você gerou na Etapa 2 .
Exemplo em PHP
<?php
// Comparing Signatures
// Example Header of the request sent by Jump:
$headers = [
'Jump-Signature' => 't=1681235417000,v1=b9ffafcd16416bd11e36f877c2d7ccc71633d174f8245abc49fc2aef7e6633c8'
];
// Extract the value of 't' from Header 'Jump-Signature'
// '1681235417000'
$timestamp = explode("=", explode(",", $headers['Jump-Signature'])[0])[1];
// Extract the value of 'v1' from Header 'Jump-Signature'
// 'b9ffafcd16416bd11e36f877c2d7ccc71633d174f8245abc49fc2aef7e6633c8'
$signature = explode("=", explode(",", $headers['Jump-Signature'])[1])[1];
// The Signature you generated in Step 2 must be equal to the value of the "$signature" variable.
// Must return 1 (true)
echo ('yourSignature' === $signature);Atualizado
Isto foi útil?

