Points de base
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:
$_SESSION["username"]
parce que la valeur agit comme un drapeau "d'authentification partielle" pour $_SESSION["isAuthenticated"]
en plus de stocker le nom d'utilisateur. 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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!