
Aprimore sua autenticação multifatorial com a Verify API e o SIM Swap Insight
Tempo de leitura: 8 minutos
Este artigo foi atualizado pela última vez em 4 de março de 2026
Introdução
Os ataques de troca de SIM representam muitos riscos, incluindo roubo de identidade e apropriação de identidade. Este tutorial mostrará como melhorar a segurança ao redefinir senhas, verificando se o seu cartão SIM foi trocado no seu celular e enviando um SMS para recuperar sua Account. O fluxo utiliza a Verify API para verificar um token e a API Identity Insights para detectar se um cartão SIM foi trocado nos últimos dias. Se for o caso, o código de verificação não será enviado.
Observação: As Soluções Alimentadas pela Rede estão disponíveis nos seguintes países e por meio dos seguintes provedores de serviços de comunicação (CSPs)
Código-fonte
O código-fonte do aplicativo pode ser encontrado em nosso repositório do GitHub.
Pré-requisitos
Node.js e npm instalados no seu computador.
Um editor de código/texto e conhecimentos básicos de JavaScript.
Arquitetura da aplicação
O aplicativo segue uma arquitetura cliente-servidor. O cliente lida com as interações do usuário por meio de HTML e JavaScript, incluindo a inserção de números de telefone e o envio de códigos de verificação. O cliente e o servidor se comunicam por meio de solicitações GET/POST. O servidor, desenvolvido em Node.js com Express, gerencia a lógica de back-end, incluindo a integração com as APIs Identity Insights e Verify v2 da Vonage para verificações de segurança e autenticação.
Criar um novo projeto
Crie um novo projeto e acesse o diretório correspondente.
mkdir improve-your-auth && cd improve-your-auth Iniciar um novo projeto do Node
No diretório do projeto recém-criado, inicialize um novo projeto Node. Isso criará um novo package.json arquivo. O -y opção preenche automaticamente os valores padrão sem solicitar detalhes.
npm init -y Instale as dependências
Para instalar todas as dependências de uma só vez, execute o comando a seguir. Ele as adicionará automaticamente ao seu package.json arquivo e as instalará no node_modules .
npm install @vonage/server-sdk @vonage/identity-insights dotenv express
Criar um novo aplicativo da Vonage
Agora que definimos as pastas e as dependências que usaremos no projeto, é hora de criar um aplicativo Vonage com os recursos Verify e Identity Insights.
Depois de se cadastrar ou fazer login em um Account da Vonage, você pode criar um novo aplicativo no painel de controle acessando “Seus Applications”, clicando em “Criar um novo aplicativo”, atribuindo um nome a ele, como “autenticação multifatorial”, e ativando as opções “Verify V2” e “Soluções baseadas em rede”.
Observação: Registre seu aplicativo na Vonage e junto aos Provedores de Serviços de Comunicação (CSP) antes de usar a API do Identity Insights. Se o seu registro já tiver sido aprovado, você pode começar a desenvolver sua solução imediatamente. Caso contrário, consulte nosso guia sobre Registro na Rede da Vonage para obter mais detalhes.
Crie um par de chaves pública/privada para autenticação na API; isso fará o download de um private.key. Adicione esse arquivo à pasta do seu projeto Node.js.
Implementação no lado do servidor
Visão geral da troca de SIM da Identity Insights
O aspecto importante da API Identity Insights que utilizaremos nesta demonstração é sua capacidade de verificar se a troca ocorreu nos últimos dias, informando ao usuário que pode ter havido uma possível fraude caso a troca não tenha sido feita por ele.
O recurso de análise de troca de SIM reforça os métodos de autenticação baseados em SIM, incluindo senhas de uso único por SMS e autenticação silenciosa. Ele rastreia a última troca de SIM para um número de celular específico e verifica a data de ativação do cartão SIM em tempo real.
Criar o arquivo do servidor
O arquivo server.js é nosso script principal do servidor, que se integra às APIs do Vonage Identity Insights e da Verify v2 para autenticar usuários com segurança. Ele também hospeda as páginas da web do nosso painel bancário e gerencia o login e a verificação dos usuários.
Configurar o cliente do Identity Insights
Inicializamos dois clientes na inicialização: o cliente principal do Vonage para o Verify v2 e um cliente dedicado do IdentityInsights para verificações de troca de SIM. Ambos se autenticam usando o ID do seu aplicativo e a chave privada; portanto, não há necessidade de gerenciar tokens OAuth2 manualmente.
const { Vonage } = require("@vonage/server-sdk");
const { Auth } = require("@vonage/auth");
const { Channels } = require("@vonage/verify2");
const { IdentityInsights } = require("@vonage/identity-insights");
const vonage = new Vonage(
new Auth({
applicationId: APPLICATION_ID,
privateKey: keyContent,
})
);
const identityClient = new IdentityInsights({
applicationId: APPLICATION_ID,
privateKey: keyContent,
});
Verificação de troca de cartão SIM
A checkSim função verifica se o número de telefone foi trocado recentemente usando o SDK do Identity Insights. Eu defini uma PERIOD variável de ambiente que você pode definir com o número de horas atrás que deseja verificar para saber se a troca do SIM ocorreu.
Você também pode usar o SIM Swap Insight para obter a data e a hora da última troca de SIM realizada. Saiba mais sobre como fazer uma chamada de API com o SIM Swap Insight.
async function checkSim() {
try {
const resp = await identityClient.getIdentityInsights({
phoneNumber: phoneNumber,
purpose: "FraudPreventionAndDetection",
insights: {
simSwap: {
period: parseInt(PERIOD),
},
},
});
return resp.insights?.simSwap?.isSwapped === true;
} catch (error) {
console.warn("Identity Insights SDK call failed:", error && error.message);
}
}
Adicionar API Verify V2
No nosso caso de uso, a API Verify V2 nos permite enviar um código de verificação para o número de telefone de um usuário, caso não tenha sido detectada nenhuma troca recente de cartão SIM.
Rota de troca do chip SIM
A rota /simswap realiza a verificação de troca de SIM separadamente, para que o cliente possa analisar o resultado antes de decidir se solicita um código de verificação:
app.post("/simswap", async (req, res) => {
phoneNumber = req.body.phone;
try {
const simSwapped = await checkSim();
res.json({
swapped: simSwapped,
});
} catch (error) {
console.error("Error checking SIM swap:", error);
res.status(500).json({ message: "Error processing request." });
}
});
Solicitação de verificação
A seguir, processamos uma solicitação de verificação. Assim que o cliente confirmar o resultado da verificação de troca de SIM e o usuário optar por prosseguir, enviamos um código de verificação usando a API Verify V2:
app.post("/sendcode", async (req, res) => {
const phone = process.env.RECIPIENT_NUMBER ? process.env.RECIPIENT_NUMBER : req.body.phone;
try {
const response = await vonage.verify2.newRequest({
brand: "Vonage Bank",
workflow: [
{
channel: Channels.SMS,
to: phone,
},
],
});
verifyRequestId = response.requestId;
res.json({
message: "Verification code sent.",
verifycode: true,
request_id: verifyRequestId,
});
} catch (error) {
console.error("Error during verification:", error);
res.status(500).json({ message: "Error processing request.", verifycode: false });
}
}); Envio do PIN
Assim que o usuário receber seu código, basta inseri-lo:
app.post("/verify", (req, res) => {
const { pin, newPass } = req.body;
vonage.verify2
.checkCode(verifyRequestId, pin)
.then((status) => {
if (status === "completed") {
const user = Object.values(users).find(user => user.username === "user1");
if (user) {
user.password = newPass;
} else {
res.status(404).json({ message: "User not found." });
return;
}
res.json({ message: "Success" });
} else {
res.json({ message: "Invalid verification code. Please try again." });
}
})
.catch((err) => {
console.error("Error during PIN verification:", err);
res.status(500).json({ message: "Error during PIN verification." });
});
});
Criar o arquivo de variáveis de ambiente
Crie um .env arquivo para o seu projeto e adicione as variáveis de ambiente encontradas no trecho de código abaixo. Consulte postagem no blog do Michael para uma excelente explicação sobre o uso de variáveis de ambiente no Node.js.
O VONAGE_API_SECRET e VONAGE_API_SECRET podem ser encontradas no Painel da Vonage.
Vonage Dashboard
# Your Vonage application
VONAGE_APPLICATION_ID=your_application_id
VONAGE_PRIVATE_KEY=/path/to/your/private.key
# Number of hours to check SIM Swap events
PERIOD=72
Implementação no lado do cliente
Adicione o conteúdo e o estilo
No arquivo arquivo index.html, vamos adicionar dois formulários: um para inserir um número de telefone e outro para fazer login com um PIN. Esse layout permite que o usuário autentique sua identidade com segurança. Por uma questão de simplicidade e clareza, estou deixando a senha em texto simples. É claro que, em cenários reais ou de produção, você precisará criptografar a senha e, eventualmente, adicionar um valor de Salt para reforçar a segurança.
No arquivo main.html, teremos nosso painel do banco, que fica acessível assim que o usuário fizer o login com sucesso.
O arquivo style.css contém os estilos para os dois arquivos HTML. Você pode usar os estilos simples que adicionei para este projeto ou dar asas à criatividade e criar os seus próprios!
Adicione o arquivo client.js
No arquivo client.js, processamos os envios de formulários em nosso site. Ele gerencia as etapas em que os usuários inserem seus números de telefone e recebem um código de verificação caso seu cartão SIM não tenha sido trocado recentemente.
O script informa rapidamente aos usuários se eles não podem ser autenticados devido a uma troca recente de cartão SIM ou se receberão um código para prosseguir com o login. Isso garante que apenas usuários com contas seguras possam acessar recursos confidenciais.
Experimente
Para ver tudo em ação, inicie o aplicativo executando o seguinte comando:
node server.js
Em seguida, abra seu navegador da web e acesse:
http://localhost:3000/
Veja o que você deve esperar: imagine que você esqueceu sua senha. Clique em “Esqueci a senha” para iniciar a recuperação. Será solicitado que você insira seu número de telefone e solicite a verificação.
Se o aplicativo detectar uma troca recente do chip SIM, aparecerá um aviso: “Atenção! Ocorreu uma alteração recente no emparelhamento do cartão SIM da conta de celular do usuário. Deseja continuar?” Se você não iniciou essa troca e escolher 'Não, não fui eu’, isso é um sinal de que pode haver uma fraude envolvendo seu número. É o momento de entrar em contato com sua operadora de celular.
Observação: Na demonstração, é solicitado que você confirme que trocou o cartão SIM; em uma situação real, o usuário provavelmente seria orientado a entrar em contato diretamente com a operadora para verificações adicionais de identidade.
Da mesma forma, essa abordagem poderia ser aplicada à autenticação multifatorial no login, em que seria realizada uma verificação antes do envio do token de uso único; caso fosse detectada uma troca recente do cartão SIM, o usuário seria convidado a entrar em contato diretamente com o provedor de serviços para verificações adicionais de identidade.
Por outro lado, se você trocou seu chip e selecionou “Sim, fui eu”, o aplicativo usa a Verify API para enviar um código de verificação para o seu celular. Digite esse código na próxima tela e defina uma nova senha. Depois de fazer isso, você poderá usar suas novas credenciais para acessar sua conta bancária simulada.
Conclusão
Parabéns, você chegou ao final deste tutorial! Você aprendeu a usar a Verify API para verificar um token e o SIM Swap Insight para detectar se o número de telefone foi trocado nos últimos dias.
Tem alguma dúvida ou quer compartilhar o que está criando?
Inscreva-se no Boletim Informativo para Desenvolvedores
Siga-nos no X (antigo Twitter) para ficar por dentro das novidades
Assista aos tutoriais no nosso canal do YouTube
Conecte-se conosco na página de desenvolvedores da Vonage no LinkedIn
Fique conectado e acompanhe as últimas notícias, dicas e eventos para desenvolvedores.