For the complete documentation index, see llms.txt. This page is also available as Markdown.

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