
Améliorez votre authentification multifactorielle avec l'API Verify et SIM Swap Insight
Temps de lecture : 8 minutes
Cet article a été mis à jour pour la dernière fois le 4 mars 2026
Introduction
Les attaques par échange de carte SIM présentent de nombreux risques, notamment l'usurpation d'identité et la prise de contrôle de l'identité. Ce tutoriel montrera comment améliorer la sécurité lors de la réinitialisation des mots de passe en vérifiant si votre carte SIM a été échangée sur votre téléphone portable et en envoyant un SMS pour récupérer votre Account. Le flux utilise l Verify API Verify pour vérifier un jeton et l Identity Insights API Identity Insights pour détecter si une carte SIM a été échangée au cours des derniers jours. Si c'est le cas, le code de vérification ne sera pas envoyé.
Remarque : les solutions alimentées par le réseau sont disponibles dans les pays et les fournisseurs de services de communication (FSC) suivants pays et les fournisseurs de services de communication (CSP) suivants
Code source
Le code source de l'application est disponible sur notre GitHub repo.
Conditions préalables
Node.js et npm installés sur votre machine.
Un éditeur de code/texte et des connaissances de base en JavaScript.
Vonage API Account To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Architecture des applications
L'application suit une architecture client-serveur. Le client gère les interactions avec l'utilisateur au moyen de HTML et de JavaScript, notamment la saisie des numéros de téléphone et l'envoi des codes de vérification. Le client et le serveur communiquent par le biais de requêtes GET/POST. Le serveur, développé en Node.js avec Express, gère la logique du backend, notamment l'interface avec les API Identity Insights et Verify v2 de Vonage pour les contrôles de sécurité et l'authentification.
Créer un nouveau projet
Créez un nouveau projet et accédez à son répertoire.
mkdir improve-your-auth && cd improve-your-auth Démarrer un nouveau projet Node
Dans votre répertoire de projet nouvellement créé, initialisez un nouveau projet Node. Cela créera un nouveau fichier package.json nouveau fichier. L'indicateur -y remplit automatiquement les valeurs par défaut sans demander de détails.
npm init -y Installer les dépendances
Pour installer toutes les dépendances en une seule fois, lancez la commande suivante. Elle les ajoutera automatiquement à votre fichier package.json et les installera dans le répertoire node_modules de votre projet.
npm install @vonage/server-sdk @vonage/identity-insights dotenv express
Créer une nouvelle application Vonage
Maintenant que nous avons spécifié les dossiers et les dépendances que nous utiliserons pour le projet, il est temps de créer une Applications Vonage avec les capacités Verify et Identity Insights.
Après avoir ouvert un compte Vonage, vous pouvez créer une nouvelle application dans le tableau de bord.vous pouvez créer une nouvelle application dans le tableau de bord en naviguant vers Vos Applicationsen cliquant sur "Créer une nouvelle application", en lui donnant un nom, par exemple "authentification multifactorielle", et en désactivant les options Verify V2 et Network Powered Solutions.
Remarque : enregistrez votre application auprès de Vonage et des fournisseurs de services de communication (CSP) avant d'utiliser l'API Identity Insights. Si votre enregistrement est déjà approuvé, vous pouvez commencer à construire votre solution immédiatement. Si ce n'est pas le cas, consultez notre guide sur Enregistrement du réseau Vonage pour plus de détails.
Créer une paire de clés publiques/privées pour l'authentification de l'API ; cela téléchargera un fichier private.key. Ajoutez ce fichier au dossier de votre projet node.
Mise en œuvre côté serveur
Identity Insights SIM Swap Overview
L'aspect important de l'API Identity Insights que nous utiliserons pour cette démonstration est sa capacité à vérifier si l'échange a eu lieu au cours des derniers jours, ce qui permet à l'utilisateur de savoir s'il y a eu une fraude potentielle si l'échange n'a pas été effectué par lui.
La fonction SIM Swap insight renforce les méthodes d'authentification basées sur la carte SIM, notamment les mots de passe à usage unique par SMS et l'authentification silencieuse. Il permet de suivre le dernier échange de cartes SIM pour un numéro de téléphone mobile spécifique et de vérifier la date d'activation d'une carte SIM en temps réel.
Créer le fichier du serveur
Le fichier server.js est notre script de serveur principal qui s'intègre aux API Identity Insights et Verify v2 de Vonage pour authentifier les utilisateurs en toute sécurité. Il sert également les pages web de notre tableau de bord bancaire et gère la connexion et la vérification des utilisateurs.
Configuration du client Identity Insights
Nous initialisons deux clients au démarrage : le client principal de Vonage pour Verify v2, et un client IdentityInsights dédié aux vérifications SIM Swap. Les deux s'authentifient à l'aide de votre identifiant d'application et de votre clé privée, de sorte qu'il n'est pas nécessaire de gérer manuellement les jetons OAuth2.
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,
});
Vérification de l'échange de cartes SIM
La fonction checkSim vérifie si le numéro de téléphone a été échangé récemment à l'aide du SDK Identity Insights. J'ai défini une PERIOD que vous pouvez définir comme le nombre d'heures écoulées depuis lesquelles vous souhaitez vérifier si la carte SIM a été échangée.
Vous pouvez également utiliser le SIM Swap Insight pour obtenir la date et l'heure du dernier échange de cartes SIM effectué. En savoir plus sur les appels API avec le 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);
}
}
Ajouter l'API Verify V2
Dans notre cas d'utilisation, l'API Verify V2 nous permet d'envoyer un code de vérification au numéro de téléphone d'un utilisateur si aucun échange récent de carte SIM n'a été détecté.
Itinéraire d'échange de cartes SIM
La route /simswap effectue la vérification de l'échange de cartes SIM séparément, de sorte que le client peut traiter le résultat avant de décider s'il faut demander un code de vérification :
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." });
}
});
Demande de vérification
Ci-dessous, nous traitons une demande de vérification. Une fois que le client a confirmé le résultat de la vérification de l'échange de cartes SIM et que l'utilisateur choisit de continuer, nous envoyons un code de vérification à l'aide de l'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 });
}
}); Soumission du code PIN
Une fois que l'utilisateur a reçu son code, il lui suffit de le soumettre :
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." });
});
});
Créer le fichier des variables d'environnement
Créez un fichier .env pour votre projet et ajoutez les variables d'environnement trouvées dans l'extrait de code ci-dessous. Reportez-vous à l'article de blog de Michael pour une explication détaillée de l'utilisation des variables d'environnement dans Node.js..
Les VONAGE_API_SECRET et VONAGE_API_SECRET se trouvent sur le tableau de bord de 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
Mise en œuvre côté client
Ajouter le contenu et le style
Dans le fichier index.htmlnous ajouterons deux formulaires : l'un pour la saisie d'un numéro de téléphone et l'autre pour la connexion à l'aide d'un code PIN. Cette présentation permet à l'utilisateur d'authentifier son identité en toute sécurité. Pour des raisons de simplicité et de clarté, je laisse le mot de passe en clair. Bien entendu, dans des scénarios réels/de production, vous devrez crypter le mot de passe et éventuellement ajouter une valeur Salt pour renforcer la sécurité.
Dans le fichier fichier main.htmlnous avons le tableau de bord de la banque, qui est accessible une fois que l'utilisateur s'est connecté avec succès.
Le fichier fichier style.css contient le style des deux fichiers HTML. Vous pouvez utiliser les styles simples que j'ai ajoutés pour ce projet, ou faire preuve de créativité et créer les vôtres !
Ajouter le fichier client.js
Dans le fichier client.jsnous gérons les soumissions de formulaires sur notre site web. Il gère les étapes où les utilisateurs entrent leur numéro de téléphone et reçoivent un code de vérification si leur carte SIM n'a pas été échangée récemment.
Le script indique rapidement aux utilisateurs s'ils ne peuvent pas être authentifiés en raison d'un récent échange de carte SIM ou s'ils recevront un code leur permettant de se connecter. Ainsi, seuls les utilisateurs disposant d'un compte sécurisé peuvent accéder aux fonctions sensibles.
Testez-le
Pour voir tout cela en action, démarrez l'application en exécutant :
node server.js
Ensuite, ouvrez votre navigateur web et naviguez vers :
http://localhost:3000/
Voici ce qui vous attend : imaginez que vous avez oublié votre mot de passe. Cliquez sur "Mot de passe oublié" pour commencer la récupération. Vous serez invité à saisir votre numéro de téléphone et à demander une vérification.
Si l'application détecte un récent échange de carte SIM, un avertissement s'affiche : "Avertissement ! Un changement d'appairage SIM récent s'est produit pour le compte mobile de l'utilisateur. Poursuivre ?"Si vous n'êtes pas à l'origine de cette permutation et que vous choisissez 'Non, ce n'est pas moi', c'est le signe qu'il y a peut-être une fraude avec votre numéro. C'est le moment de vérifier auprès de votre opérateur de téléphonie mobile.
Remarque : dans la démonstration, vous êtes invité à confirmer que vous avez échangé la carte SIM ; dans un scénario réel, l'utilisateur serait probablement invité à contacter directement le fournisseur de services pour des vérifications d'identité supplémentaires.
De même, cette approche pourrait être appliquée à l'authentification multifactorielle lors de la connexion, où une vérification serait effectuée avant l'envoi du jeton à usage unique ; si un échange récent de cartes SIM est détecté, l'utilisateur serait invité à contacter directement le fournisseur de services pour des vérifications d'identité supplémentaires.
En revanche, si vous avez échangé votre SIM et sélectionné " Oui, c'est moi ", l'appli utilise l'API Verify pour envoyer un code de vérification à votre téléphone. Saisissez ce code sur l'écran suivant et définissez un nouveau mot de passe. Une fois que c'est fait, vous pouvez utiliser vos nouveaux identifiants pour vous connecter à votre compte bancaire simulé.
Conclusion
Félicitations, vous avez atteint la fin de ce tutoriel ! Vous avez appris à utiliser l'API Verify pour vérifier un jeton et l'Insight SIM Swap pour détecter si le numéro de téléphone a été échangé au cours des derniers jours.
Vous avez une question ou souhaitez partager ce que vous construisez ?
Rejoignez la conversation sur le Communauté Vonage Slack
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
