Comment construire un système de vérification OTP en utilisant Python

Même si votre mot de passe est volé, les systèmes de vérification OTP constituent un facteur crucial de sécurité. Ils éliminent la nécessité de se souvenir des mots de passe, constituent une couche de sécurité supplémentaire et réduisent les risques d’hameçonnage.

Apprenez à construire un système de vérification OTP à l’aide de Python qui vous envoie un OTP sur votre numéro de téléphone portable, qui n’est valable que pendant deux minutes et qui verrouille votre compte si vous entrez un mauvais OTP trois fois de suite.

Installer les modules Tkinter, Twilio et Random

Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d’applications.

Le module Twilio vous aide à intégrer des fonctionnalités de communication telles que les SMS, les MMS, les appels téléphoniques et la vérification directement dans votre application. Il dispose d’une infrastructure basée sur le cloud ainsi que de fonctionnalités étonnantes telles que l’approvisionnement en numéros, les modèles de messages et l’enregistrement des appels.

Pour installer les modules Twilio et Tkinter, exécutez la commande suivante dans le terminal :

Le module Random est un module Python intégré utilisé pour générer des nombres pseudo-aléatoires. Il permet de générer des nombres aléatoires, de choisir des éléments aléatoires dans une liste, de mélanger le contenu d’une liste, etc. Vous pouvez l’utiliser pour créer une simulation de jet de dé, un mélangeur de listes ou un générateur de mots de passe aléatoires.

Générer l’API Twilio et obtenir un numéro de téléphone

Pour utiliser Twilio et envoyer des demandes OTP à votre téléphone portable, vous avez besoin d’informations d’authentification ainsi que d’un numéro de téléphone Twilio. Pour ce faire, vous devez :

  1. Ouvrez un compte Twilio et visitez le site Web de Twilio. console Twilio.
  2. Faites défiler vers le bas et cliquez sur le bouton Obtenir un numéro de téléphone . Copiez le numéro de téléphone généré.
  3. Faites défiler vers le bas jusqu’à la touche Informations sur le compte section. Copiez la section SID du compte et le Auth Token.
Voir aussi :  Quoi de neuf dans Angular v16 ?

Construire la structure de l’application

Vous pouvez trouver l’ensemble du code source pour construire un système de vérification OTP en utilisant Python dans ce dépôt GitHub.

Importez les modules nécessaires et définissez les informations d’authentification. Initialisez le client Twilio pour qu’il s’authentifie et soit le point d’entrée pour les appels API. Définissez le délai d’expiration à deux minutes.

Définissez une classe, OTPVerification, et initialiser le constructeur pour définir les valeurs par défaut des variables, initialiser la fenêtre racine et définir le titre et les dimensions de l’application.

Définissez trois étiquettes pour demander un numéro de téléphone portable et un OTP, et pour afficher une minuterie après que le programme a envoyé un OTP. Définissez l’élément parent, le texte qu’il doit afficher et les styles de police qu’il doit posséder. De même, créez deux widgets d’entrée pour obtenir des informations de la part de l’utilisateur. Définissez son élément parent, sa largeur et ses styles de police.

Créez trois boutons pour envoyer l’OTP, renvoyer l’OTP et vérifier l’OTP. Définissez son élément parent, le texte qu’il doit afficher, la commande qu’il doit exécuter lorsqu’il est cliqué et ses styles de police. Organisez ces éléments à l’aide de l’élément pack pour organiser ces éléments.

Construire la fonctionnalité de l’application

Définir une méthode, start_timer() qui exécute timer_countdown dans un thread séparé.

Définir une méthode, timer_countdown(). Enregistre l’heure de départ et exécute une boucle infinie qui prend l’heure actuelle et calcule le temps écoulé et le temps restant. Si stop_timer est vrai, terminez la boucle. Si le temps restant est inférieur ou égal à zéro, un message d’erreur s’affiche, indiquant que l’OTP a expiré.

Voir aussi :  Comment stocker, mettre à jour, supprimer et récupérer des données à partir d'une base de données Firebase à l'aide d'Angular

Activez le bouton de renvoi de l’OTP, définissez l’OTP comme étant nul et terminez. Sinon, calculer les minutes et les secondes restantes, les afficher sur l’étiquette de la minuterie et dormir pendant une seconde.

Définir une méthode, send_otp(). Si verrouillé est vrai, afficher le message approprié. Sinon, extrayez le numéro de téléphone, validez-le et générez un OTP aléatoire. Passez le téléphone portable que vous avez obtenu plus tôt et utilisez le client pour envoyer l’OTP à votre numéro de téléphone. Affichez une boîte de message, démarrez la minuterie, désactivez les boutons et effacez complètement l’entrée.

Définissez une méthode, resend_otp(). En cas de verrouillage, afficher le message approprié. Sinon, obtenir le numéro de téléphone, le valider, régénérer un OTP aléatoire, renvoyer l’OTP, afficher la boîte de message, démarrer la minuterie et désactiver le bouton de renvoi de l’OTP.

Définissez une méthode, verify_otp(). Récupère l’OTP et vérifie que l’utilisateur n’a rien saisi. Si l’OTP stocké est Aucun demandez à l’utilisateur de générer d’abord l’OTP. Si l’OTP saisi par l’utilisateur correspond à celui qui est enregistré, affichez le message de vérification réussie de l’OTP, arrêtez la minuterie et quittez le programme. Dans le cas contraire, vérifiez les tentatives erronées. Si le nombre de tentatives erronées est supérieur à trois, verrouillez le compte.

Définir une méthode, lock_account(). Attribue la valeur true à l’état verrouillé et affiche l’étiquette sous la forme suivante Compte verrouillé. Désactivez toutes les étiquettes, entrées et boutons. Arrêtez la minuterie existante et démarrez une nouvelle minuterie de dix minutes.

Définir une méthode start_countdown(). Si le temps restant est inférieur ou égal à zéro, réinitialiser le compte. Sinon, afficher que le programme a bloqué le compte et réessayer dans le temps restant à l’aide d’un callback.

Définir une fonction, reset_account(). Réinitialise l’état de tous les widgets et variables comme auparavant.

Créez la fenêtre racine, une instance de la classe, et exécutez l’application Tkinter.

Voir aussi :  Comment créer des ennemis dans les jeux d'arcade Python

Exemple de sortie de vérification à l’aide de l’OTP

Lorsque vous exécutez le programme de vérification OTP, vous obtenez une fenêtre vous demandant d’entrer votre numéro de téléphone portable. Saisissez-le ainsi que votre code pays et appuyez sur le bouton Envoyer l’OTP et appuyez sur le bouton Envoyer OTP . Un message vous indique que le programme a envoyé l’OTP avec succès et le bouton se désactive pendant deux minutes. Vérifiez l’OTP sur votre téléphone et saisissez-le avant qu’il n’expire.

Si vous saisissez le bon OTP avant la fin du délai, vous recevez un message indiquant que le programme a vérifié l’OTP avec succès et le programme se termine. Si vous ne l’avez pas saisi à temps, vous recevrez un message indiquant que l’OTP a expiré. Vous pouvez cliquer sur le bouton Renvoyer l’OTP pour générer un nouvel OTP et l’envoyer à votre téléphone.

Si vous entrez un mauvais OTP, le programme affiche une boîte de message indiquant L’OTP ne correspond pas.

Si vous saisissez trois fois un OTP erroné, tous les champs sont désactivés et le compte est bloqué pendant dix minutes.

Utiliser Twilio avec Python

En utilisant Twilio, vous pouvez construire un système de notification par SMS pour divers événements. Vous pouvez l’utiliser avec des appareils IoT pour déclencher des SMS lorsque quelque chose passe au-dessus ou en dessous d’un certain seuil ou lorsque vous détectez un intrus. Vous pouvez créer des systèmes de connexion sécurisés avec authentification à deux facteurs, construire un chatbot WhatsApp et un système de rappel de rendez-vous.

En outre, vous pouvez l’utiliser pour la vérification des numéros de téléphone, les campagnes de marketing, l’envoi d’enquêtes et la collecte de commentaires. Lors de la création d’une application, tenez toujours compte de la tarification de l’API Twilio afin d’éviter des coûts inattendus.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *