


PHP Master | Authentification multi-facteurs avec PHP et Twilio
Points de base
- L'authentification multifactrice (MFA) nécessite au moins deux méthodes de vérification différentes, qui sont beaucoup plus sûres que l'authentification traditionnelle à facteur unique. Une méthode MFA pratique consiste à demander à l'utilisateur de fournir un mot de passe et un jeton de confirmation envoyé à son téléphone via SMS ou des appels vocaux.
- Twilio fournit une infrastructure et des API que les développeurs peuvent utiliser pour rédiger des applications téléphoniques interactives, y compris les systèmes d'authentification multi-facteurs. Les développeurs peuvent utiliser TWIML (Twilio Markup Language) et son API REST pour passer et recevoir des appels et envoyer et recevoir des SMS via Twilio.
- L'utilisation de Twilio pour implémenter l'authentification multi-facteurs implique la création d'une nouvelle instance de la classe Services_twilio, l'accès à son API via la propriété du compte, et l'envoi de messages SMS ou le lancement d'appels vocaux via la méthode Create () de la ressource d'instance de message SMS ou ou ou ou ou via la méthode CREATE () de la ressource d'instance de message SMS ou ou ou ou ou de ressource d'instance de message SMS la ressource d'instance d'appels.
- Le processus d'authentification multi-facteurs implique de montrer à l'utilisateur un formulaire de connexion pour démarrer le processus, de vérifier ses informations d'identification, d'envoyer son code à son téléphone et d'autoriser l'utilisateur uniquement après avoir soumis le code correct. Ce processus peut être personnalisé et améliore les fonctionnalités telles que la redoute à une liaison de code de confirmation, le verrouillage d'un compte si un code incorrect est fourni et la journalisation des événements d'authentification.
Il existe de nombreuses façons de confirmer l'identité d'un utilisateur: se référer à certains aspects de l'utilisateur lui-même (comme la biométrie), demander ce que l'utilisateur sait (comme les mots de passe), ou demander ce que l'utilisateur a réellement (comme une carte RFID). Les sites Web traditionnels implémentent l'authentification à facteur unique, qui ne nécessite que le mot de passe de l'utilisateur. Mais en revanche, l'authentification multifactrice nécessite au moins deux méthodes de vérification différentes et est beaucoup plus sûre. L'utilisation de la biométrie pour vérifier l'accès de quelqu'un à votre site Web peut encore être un long chemin à parcourir, avec de nombreux obstacles techniques et des problèmes de libertés civiles à surmonter. Une méthode d'authentification multi-facteurs plus pratique consiste à implémenter des options à partir de deux autres catégories, telles que l'exigence d'un mot de passe et un jeton de confirmation envoyé à l'utilisateur via SMS ou des appels vocaux (l'utilisateur connaît le mot de passe et a un téléphone portable). C'est ce que vous apprendrez à réaliser dans cet article. Il peut être frustrant si vous effectuez une intégration de téléphone à partir de zéro, et dans la plupart des cas, il n'est pas pratique de créer votre propre infrastructure (bien que cela puisse être fait avec des programmes comme le matériel de marchandise et l'astérisque). Heureusement, Twilio fournit des infrastructures et des API que les développeurs peuvent facilement rédiger des applications téléphoniques interactives. J'utiliserai leurs services dans cet article. Vous pouvez passer et recevoir des appels et envoyer et recevoir des messages texte via Twilio à l'aide de Twiml (Twilio Markup Language) et son API REST. Vous pouvez utiliser l'API directement ou utiliser l'une des bibliothèques auxiliaires disponibles. La bibliothèque que j'utiliserai ici est Twilio-Php, qui est une bibliothèque publiée et officiellement soutenue par Twilio. Alors, êtes-vous prêt à apprendre à implémenter l'authentification multi-facteurs? Continuez à lire!
Connectez-vous avec PHP
La connexion à un service Twilio est aussi simple que d'inclure la bibliothèque Twilio-PHP et de créer une nouvelle instance de la classe Services_twilio. Le constructeur de cet objet accepte les jetons SID et d'authentification de votre compte qui sont répertoriés sur la page de tableau de bord de votre compte Twilio après avoir enregistré leurs services. Avec les instances Services_twilio disponibles, vous pouvez accéder à son API via la propriété du compte. Le compte expose une instance de services_twilio_rest_account qui représente votre compte Twilio. J'utilise un seul compte ici, mais je peux avoir plusieurs sous-comptes. Cela peut être utile pour décomposer vos interactions en fonction de vos besoins. Vous pouvez lire la documentation Twilio pour en savoir plus sur les sous-comptes.
<?php require "Services/Twilio.php"; define("TWILIO_SID", "…"); define("TWILIO_AUTH_TOKEN", "…"); $twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN); $acct = $twilio->account;
expose plusieurs autres propriétés, y compris les appels et SMS_Messages. Ce sont des cas d'objets tels que Services_Twilio_Rest_Calls et Services_Twilio_Rest_SmsMessages qui encapsulent les ressources de repos utilisées pour émettre respectivement vos appels et messages. Cependant, vous utilisez rarement ces objets en dehors de la méthode Create (), et la documentation appelle leurs propriétés en les exposant "Ressources d'instance". Je ferai la même chose pour éviter toute confusion.
Envoyer un message texte
Envoyer des messages SMS est effectué via la méthode create () de la ressource d'instance de message SMS ($ act- & gt; sms_messages). Cette méthode accepte trois paramètres: le numéro Twilio de votre compte (similaire à "l'adresse de l'expéditeur" d'un e-mail), le numéro du destinataire ("adresse du destinataire") et votre texte de message (jusqu'à 160 caractères).
<?php $code = "1234"; // some random auth code $msg = $acct->sms_messages->create( "+19585550199", // "from" number "+19588675309", // "to" number "Your access code is " . $code );
Dans les coulisses, la bibliothèque Twilio-PHP fait des demandes de publication pour l'API Twilio en votre nom. Une instance de Services_Twilio_Rest_SmsMessage est renvoyée par un appel qui résume des informations sur le message. Vous pouvez afficher une liste complète de quelles informations sont fournies dans la documentation, mais peut-être les valeurs plus importantes sont exposées par les attributs de statut et de prix. L'état affiche l'état du SMS (fileté, envoyé, envoyé ou échoué), tandis que le prix affiche le montant du message facturé pour votre compte.
Envoyer l'appel vocal
Démarrage d'un appel vocal est effectué via la méthode Create () de la ressource d'instance d'appels ($ act- & gt; appels). Comme pour l'envoi de messages texte, vous devez fournir votre numéro de compte, le numéro de destinataire et le message. Cependant, dans ce cas, le message est l'URL du document Twiml décrivant la nature de l'appel.
<?php // Note spaces between each letter in auth code. This forces // the speech synthesizer to enunciate each digit. $code = "1 2 3 4"; $msg = $acct->calls->create( "+19585550199", // "from" number "+19588675309", // "to" number "http://example.com/voiceCall.php?code=" . urlencode($code) );
fait à nouveau une demande de message en votre nom et fait un appel vocal. Lorsque la personne appelée répond à l'appel, le processus de Twilio récupérera et exécutera les commandes fournies dans le XML de l'URL de rappel. Dans l'exemple du démarrage d'un appel vocal ci-dessus, j'ai passé le code de confirmation en tant que paramètre Get à l'URL du script de rappel. Lorsque Twilio récupère l'URL, PHP utilise ce paramètre lors du rendu de la réponse. La construction d'un flux d'appel ne nécessite qu'un petit nombre de balises Twiml, mais vous pouvez les utiliser pour définir des processus assez complexes (tels que les menus d'arbre de téléphone, etc.). Cependant, le flux d'appel de base pour de tels scénarios peut être généré par PHP, comme indiqué ci-dessous:
<?php require "Services/Twilio.php"; define("TWILIO_SID", "…"); define("TWILIO_AUTH_TOKEN", "…"); $twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN); $acct = $twilio->account;
Les balises Twiml utilisées ici sont la réponse (élément racine), disons (fournir le texte Twilio dira) et se rassemblent (collectionner l'entrée utilisateur). Lors de la prononciation du texte indiqué par l'élément Say Child, Twilio écoutera également la saisie de l'utilisateur en raison de la collecte et de la pause par la suite pendant cinq secondes afin que l'utilisateur puisse entrer sa réponse. Si la collecte a chronométré sans entrée, il quitte et exécute le texte Say ultérieur et termine l'appel. Sinon, l'entrée sera renvoyée à l'URL d'action via Post pour un traitement ultérieur. La documentation Twilio de Gather est très bonne pour expliquer les comportements et les propriétés des éléments que vous pouvez utiliser pour modifier les comportements, et énumère même plusieurs exemples. Je vous suggère de le lire rapidement. Avant de procéder, il y a encore une chose à noter; Cela oblige le synthétiseur de la parole à prononcer un par un, disant "un deux quatre quatre" au lieu de "mille deux cent trente-quatre". Pour la synthèse de la parole, ce que nous voyons parfois dans le texte n'est pas toujours ce que nous obtenons. Si cela apporte une meilleure clarté et une meilleure compréhension à votre Callee, il est acceptable de modifier ou d'agiter une conversation de prononciation.
Implémentez l'authentification multi-facteurs
Maintenant que vous avez appris le flux de travail de base pour les SMS et l'interaction vocale avec Twilio, il est temps de voir comment il s'intègre dans le processus de connexion. Ce que vous voyez ici est très simple et simple, et pour plus de clarté, j'ai réduit le code d'accompagnement, car les détails de votre propre processus de connexion peuvent varier. Un formulaire de connexion pour démarrer le processus doit être affiché à l'utilisateur. La soumission de formulaire vous fait vérifier leurs informations d'identification et rejeter les informations d'identification non valides, mais les informations d'identification valides ne devraient pas authentifier immédiatement les utilisateurs à votre application. Au lieu de cela, traitez l'utilisateur comme "partiellement vérifié", qui est un état qui lui permet d'afficher le deuxième formulaire du code demandé a été envoyé à son téléphone. L'utilisateur ne doit être autorisé qu'après avoir soumis le code correct.
<?php $code = "1234"; // some random auth code $msg = $acct->sms_messages->create( "+19585550199", // "from" number "+19588675309", // "to" number "Your access code is " . $code );
Le code ci-dessus est uniquement pour l'illustration. Dans votre application réelle, vous voudrez peut-être envisager d'ajouter ce qui suit:
- Ajoutez un lien pour renvoyer le code de confirmation au téléphone de l'utilisateur.
- Si l'utilisateur décide de ne pas continuer le processus, ajoutez un linge au formulaire de demande de code. En ce qui concerne le code ci-dessus, un tel lien doit être un défaut
$_SESSION["username"]
parce que la valeur agit comme un drapeau "d'authentification partielle" pour$_SESSION["isAuthenticated"]
en plus de stocker le nom d'utilisateur. - Si le mauvais code est fourni, ajoutez la limitation ou le verrouillage du compte.
- Connectez-vous à l'événement d'authentification quelque part en fonction de votre niveau de paranoïa ou des exigences de conformité auxquelles vous êtes confronté. (Les applications qui nécessitent une authentification multi-facteurs sont généralement suffisamment sensibles pour nécessiter une piste d'audit!)
De plus, vous voudrez peut-être envisager de créer un code d'authentification suffisamment complexe à vos fins. Les codes à 4 chiffres sont très courants, mais vous n'êtes pas limité à cela. Si vous choisissez d'utiliser un mélange de lettres ou de valeurs alphanumériques, je recommande d'éviter les valeurs confuses (telles que le numéro 0 avec la lettre O, le numéro 1 avec la lettre I, etc.).
Résumé
La popularité des appareils mobiles et des téléphones IP abordables a ajouté d'autres canaux pour interagir avec les utilisateurs, et dans cet article, vous apprenez un moyen de tirer parti de ces canaux en utilisant le service «Cloud Communication» Twilio, un service «communication cloud», Pour tirer parti de ces canaux en permettant une authentification multi-facteurs ,. J'espère que vous trouverez cet article utile pour comprendre l'authentification multifactorielle et Twilio. N'hésitez pas à commenter ci-dessous pour partager comment utiliser Twilio dans votre propre application ou implémenter l'authentification multi-facteurs. J'aimerais entendre ce que vous pensez!
(image de Fotolia)
FAQ (FAQ) sur l'authentification multi-facteurs avec PHP et Twilio
- À quel point est-il sécurisé d'utiliser PHP et Twilio pour l'authentification multi-facteurs?
L'authentification multifactrice (MFA) est très sécurisée avec PHP et Twilio. Il ajoute une couche de sécurité supplémentaire en obligeant les utilisateurs à fournir au moins deux façons d'authentification avant d'accéder à leur compte. Le premier formulaire est généralement un mot de passe, et le deuxième formulaire peut être un code envoyé au téléphone de l'utilisateur par SMS. Même s'ils ont un mot de passe, cela rend plus difficile pour les utilisateurs non autorisés d'accéder à leurs comptes.
- Puis-je personnaliser le processus d'authentification?
Oui, vous pouvez personnaliser le processus d'authentification en fonction de vos besoins. L'API de Twilio est très flexible et vous permet d'ajuster le processus d'authentification à vos exigences spécifiques. Vous pouvez choisir le type de deuxième facteur (tel que les messages texte, les appels vocaux ou les e-mails), le contenu du message, etc.
- à quel point Twilio est-il fiable d'envoyer un code d'authentification?
Twilio est une plate-forme fiable pour envoyer des codes d'authentification. Il a une forte infrastructure et fournit des taux de livraison élevés. Il fournit également des rapports de livraison en temps réel afin que vous puissiez suivre l'état des messages.
- Et si l'utilisateur perd son téléphone?
Si un utilisateur perd son téléphone, il peut toujours accéder à son compte à l'aide du code alternatif. Ces codes sont générés lors de la configuration du MFA et doivent être enregistrés dans un endroit sûr. Les utilisateurs peuvent saisir ces codes au lieu des codes envoyés à leur téléphone.
- Puis-je utiliser MFA avec PHP et Twilio pour les grandes applications?
Oui, vous pouvez utiliser MFA avec PHP et Twilio pour les grandes applications. L'infrastructure de Twilio est conçue pour gérer une grande quantité de messages, ce qui le rend adapté aux applications avec un grand nombre d'utilisateurs.
- Comment tester l'implémentation du MFA?
Vous pouvez tester votre implémentation MFA en créant un compte de test et en terminant le processus d'authentification. Twilio fournit également un environnement de bac à sable où vous pouvez tester votre code sans envoyer de messages réels.
- Est-il possible d'implémenter le MFA sans codage?
Alors que certaines solutions MFA peuvent être utilisées pour le non-codage, la mise en œuvre de MFA à l'aide de PHP et Twilio nécessite des connaissances codantes. Cependant, le processus est simple et il y a beaucoup de ressources pour vous aider.
- Combien cela coûte-t-il d'utiliser Twilio pour MFA?
Le coût de l'utilisation de Twilio pour MFA dépend du nombre de messages que vous envoyez. Twilio facture par message, donc plus vous envoyez des messages, plus les frais sont élevés. Cependant, Twilio offre des prix compétitifs et des réductions par lots.
- Puis-je utiliser MFA avec PHP et Twilio pour les applications non Web?
Oui, vous pouvez utiliser MFA avec PHP et Twilio pour les applications non Web. Vous pouvez implémenter MFA dans n'importe quelle application qui peut envoyer des demandes HTTP et traiter les réponses HTTP.
- Quels autres services offrent Twilio?
En plus du MFA, Twilio propose également une gamme de services de communication, notamment la voix, la vidéo, le chat et les e-mails. Ces services peuvent être utilisés pour créer une variété d'applications, des systèmes de service client aux outils d'automatisation du marketing.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des chaînes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Les principes de conception de Restapi incluent la définition des ressources, la conception URI, l'utilisation de la méthode HTTP, l'utilisation du code d'état, le contrôle de version et les haineux. 1. Les ressources doivent être représentées par des noms et maintenues dans une hiérarchie. 2. Les méthodes HTTP devraient être conformes à leur sémantique, telles que GET est utilisée pour obtenir des ressources. 3. Le code d'état doit être utilisé correctement, tel que 404 signifie que la ressource n'existe pas. 4. Le contrôle de la version peut être implémenté via URI ou en-tête. 5. Hateoas bottise les opérations du client via des liens en réponse.

En PHP, la gestion des exceptions est réalisée grâce aux mots clés d'essai, de catch, enfin et de lancement. 1) Le bloc d'essai entoure le code qui peut lancer des exceptions; 2) Le bloc de capture gère les exceptions; 3) Enfin, Block garantit que le code est toujours exécuté; 4) Le lancer est utilisé pour lancer manuellement les exceptions. Ces mécanismes aident à améliorer la robustesse et la maintenabilité de votre code.

La fonction principale des classes anonymes en PHP est de créer des objets uniques. 1. Les classes anonymes permettent aux classes sans nom d'être définies directement dans le code, ce qui convient aux exigences temporaires. 2. Ils peuvent hériter des classes ou implémenter des interfaces pour augmenter la flexibilité. 3. Faites attention aux performances et à la lisibilité au code lorsque vous l'utilisez et évitez de définir à plusieurs reprises les mêmes classes anonymes.
