Assinatura da resposta (obsoleto)
O que é isso?
A assinatura de resposta é um recurso introduzido para garantir a veracidade das informações recebidas da nossa API quando elas precisam ser transmitidas por um dispositivo que você não controla (como o celular do seu cliente, por exemplo).
Quando usar?
A funcionalidade de assinar requisições é opcional e, se você estiver integrando diretamente no seu backend, não há necessidade de usá-la.
No entanto, se você pretende fazer requisições para a nossa API a partir de um aplicativo que não roda em um dispositivo que você controla, nós fortemente recomendamos que você assine suas requisições e sempre verifique seu servidor para assinatura.
Como funciona?
Quando você habilita essa funcionalidade em suas requisições, não enviaremos mais a resposta em formato JSON. O corpo da resposta se tornará um JWT assinado usando o clientSecret do seu token. No payload desse JWT estará o corpo da resposta, com todos os campos que ele retornaria caso a resposta não fosse assinada.
Como isso garante a autenticidade das informações?
É simples! Se um atacante modificar o corpo da resposta (por exemplo, dizendo que a foto dele passou no face liveness), essa alteração quebraria a assinatura do JWT, e você conseguiria detectar isso no seu backend, bloqueando o acesso dele ao seu sistema.
Como solicitar que uma resposta seja assinada?
Basta enviar o valor true ao parâmetro de query string shouldSingResponse na sua requisição em rotas que suportam o recurso.
Você pode verificar se a rota suporta a resposta assinada conferindo as informações gerais na página da rota.
Exemplos
Exemplo de requisição:
Observe o ?shouldSignResponse=true no final da URL.
Exemplo de resposta:
O JWT acima foi assinado usando o clientSecret do {token} **** enviado na requisição.
Se extrairmos o payload do JWT acima, obtemos o seguinte JSON:
Se qualquer campo no payload for alterado, a assinatura é quebrada e você consegue detectar a alteração no seu backend.
Atualizado

