Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Multi-Faktor-Authentifizierung mit PHP und Twilio
Kernpunkte
Es gibt viele Möglichkeiten, die Identität eines Benutzers zu bestätigen: Beziehen Sie sich auf einige Aspekte des Benutzers selbst (z. eine RFID -Karte). Traditionelle Websites implementieren Einzelfaktorauthentifizierung, für die nur das Kennwort des Benutzers erforderlich ist. Andererseits erfordert die Multifaktorauthentifizierung mindestens zwei verschiedene Verifizierungsmethoden und ist viel sicherer. Die Verwendung von Biometrie, um den Zugriff einer Person auf Ihre Website zu überprüfen, ist möglicherweise noch ein langer Weg, da viele technische Hindernisse und bürgerliche Freiheiten zu überwinden sind. Eine praktischere Multi-Faktor-Authentifizierungsmethode besteht darin, Optionen aus zwei anderen Kategorien zu implementieren, z. Dies ist, was Sie in diesem Artikel lernen können. Es kann frustrierend sein, wenn Sie die Telefonintegration von Grund auf neu durchführen, und in den meisten Fällen ist es nicht praktisch, Ihre eigene Infrastruktur aufzubauen (obwohl dies mit Programmen wie Commodity -Hardware und Sternchen durchgeführt werden kann). Glücklicherweise bietet Twilio Infrastruktur und APIs an, die Entwickler problemlos interaktive Telefonanwendungen schreiben können. Ich werde ihre Dienste in diesem Artikel nutzen. Sie können Anrufe tätigen und empfangen und Textnachrichten über Twilio mit Twiml (Twilio Markup Language) und seiner Rest -API senden und empfangen. Sie können die API direkt oder eine der verfügbaren Hilfsbibliotheken verwenden. Die Bibliothek, die ich hier verwenden werde, ist Twilio-Php, eine Bibliothek, die von Twilio veröffentlicht und offiziell unterstützt wird. Sind Sie also bereit zu lernen, wie man Multi-Faktor-Authentifizierung implementiert? Lesen Sie weiter!
verbinden Sie sich mit PHP
Die Verbindung zu einem Twilio-Dienst ist so einfach wie die Twilio-Php-Bibliothek und das Erstellen einer neuen Instanz der DIENSTLEISUNGS_TWILIO-Klasse. Der Konstruktor dieses Objekts akzeptiert die SID- und Authentifizierungs -Token Ihres Kontos, die auf der Dashboard -Seite Ihres Twilio -Kontos aufgeführt sind, nachdem Sie deren Dienste registriert haben. Mit den verfügbaren diensten_twilio -Instanzen können Sie über die Kontoneigenschaft auf die API zugreifen. Das Konto enthält eine Instanz von diensten_twilio_rest_account, die Ihr Twilio -Konto darstellt. Ich verwende hier nur ein Konto, kann aber mehrere Unterkonten haben. Dies kann nützlich sein, um Ihre Interaktionen basierend auf Ihren Bedürfnissen abzubauen. Sie können die Twilio-Dokumentation lesen, um mehr über Unterkonten zu erfahren.
<code class="language-php"><?php require "Services/Twilio.php"; define("TWILIO_SID", "…"); define("TWILIO_AUTH_TOKEN", "…"); $twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN); $acct = $twilio->account;</code>Die
-Kontoinstanz enthält mehrere andere Eigenschaften, einschließlich Anrufe und SMS_Messages. Dies sind Instanzen von Objekten wie diensten_twilio_rest_calls und diensten_twilio_rest_smsMessages, die Restressourcen zusammenfassen, die zur Ausgabe Ihrer Anrufe bzw. Nachrichten verwendet werden. Sie verwenden diese Objekte jedoch selten außerhalb der Methode create (), und die Dokumentation ruft ihre Eigenschaften auf, in denen sie "Instanzressourcen" aufdecken. Ich werde das Gleiche tun, um Verwirrung zu vermeiden.
SMS senden
Senden von SMS-Nachrichten werden über die Methode create () der SMS-Nachrichteninstanzressource ($ acct- & gt; sms_messages) durchgeführt. Diese Methode akzeptiert drei Parameter: die Twilio -Nummer Ihres Kontos (ähnlich der "Absenderadresse" einer E -Mail), der Nummer des Empfängers ("Empfängeradresse") und Ihrem Nachrichtentext (bis zu 160 Zeichen).
<code class="language-php"><?php $code = "1234"; // some random auth code $msg = $acct->sms_messages->create( "+19585550199", // "from" number "+19588675309", // "to" number "Your access code is " . $code );</code>
Hinter den Kulissen stellt die Twilio-Php-Bibliothek einige Postanfragen für Twilio-API in Ihrem Namen vor. Eine Instanz von diensten_twilio_rest_smsmessage wird durch einen Anruf zurückgegeben, der Informationen über die Nachricht enthält. Sie können eine vollständige Liste der Informationen in der Dokumentation anzeigen, aber möglicherweise wichtigere Werte werden durch die Status- und Preisattribute aufgedeckt. Der Status zeigt den Status der Textnachricht an (in die Warteschlange, gesendet, gesendet oder fehlgeschlagen), während der Preis den Betrag der für Ihr Konto erhobenen Nachricht anzeigt.
Sprachanruf
sendenStarten eines Sprachanrufs erfolgt über die Methode create () der Call-Instanzressource ($ acct- & gt; Anrufe). Wie beim Senden von Textnachrichten müssen Sie Ihre Kontonummer, Empfängernummer und Nachricht angeben. In diesem Fall ist die Nachricht jedoch die URL des Twiml -Dokuments, die die Art des Anrufs beschreibt.
<code class="language-php"><?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) );</code>Die
Bibliothek stellt erneut eine Postanfrage in Ihrem Namen und trifft einen Sprachanruf. Wenn die angerufene Person den Anruf beantwortet, wird der Prozess von Twilio die im XML der Callback -URL bereitgestellten Befehle abgerufen und ausgeführt. Im Beispiel des obigen Sprachanrufs habe ich den Bestätigungscode als Parameter GET an die URL des Callback -Skripts übergeben. Wenn Twilio die URL abruft, verwendet PHP diesen Parameter, wenn die Antwort rendert. Das Erstellen eines Anrufflusses erfordert nur eine kleine Anzahl von Twiml -Tags, aber Sie können sie verwenden, um ziemlich komplexe Prozesse (wie Telefonbaummenüs usw.) zu definieren. Der grundlegende Anruffluss für solche Szenarien kann jedoch von PHP erzeugt werden, wie unten gezeigt:
<code class="language-php"><?php require "Services/Twilio.php"; define("TWILIO_SID", "…"); define("TWILIO_AUTH_TOKEN", "…"); $twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN); $acct = $twilio->account;</code>
Die hier verwendeten Twiml -Tags sind Antwort (Stammelement) (beispielsweise die Twilio, die das Text sagt) und sammeln (Sammeln von Benutzereingaben). Wenn Twilio vom Say Child Element angegeben wird, hört er auch auf die Benutzereingabe auf die Benutzereingabe zu und pausieren Sie danach für fünf Sekunden, damit der Benutzer seine Antwort eingeben kann. Wenn Sie zeitlich ohne Eingabe sammeln, beendet es und führt nachfolgende Sachen Text aus und beendet den Anruf. Andernfalls wird die Eingabe zur weiteren Verarbeitung per Post an die Aktions -URL zurückgeschickt. Die Twilio -Dokumentation von Came -Dokument ist sehr gut darin, Verhaltensweisen zu erklären, und die Elementeigenschaften, mit denen Sie Verhaltensweisen ändern können, und sogar mehrere Beispiele auflisten. Ich schlage vor, Sie lesen es schnell. Bevor Sie fortfahren, gibt es noch eine Sache. Dies zwingt den Sprachsynthesizer nacheinander aus und sagt "ein vier vier" anstelle von "eintausend zweihundert vierunddreißig". Für die Sprachsynthese ist das, was wir im Text sehen, manchmal nicht immer das, was wir bekommen. Wenn es Ihrer Callee besser Klarheit und Verständnis bringt, ist es in Ordnung, ein Aussprachegespräch zu ändern oder zu falsch zu schreiben.
Implementieren Sie die Multi-Faktor-Authentifizierung
Jetzt, da Sie den grundlegenden Workflow für SMS und Sprachinteraktion mit Twilio gelernt haben, ist es an der Zeit zu sehen, wie er in den Anmeldungsprozess passt. Was Sie hier sehen, ist sehr einfach und unkompliziert, und für die Klarheit habe ich den dazugehörigen Code reduziert, da die Details Ihres eigenen Anmeldungsprozesses zu variieren sind. Ein Anmeldeformular zum Starten des Vorgangs sollte dem Benutzer angezeigt werden. Die Einreichung von Formularen veranlasst Sie, ihre Anmeldeinformationen zu überprüfen und ungültige Anmeldeinformationen abzulehnen, aber gültige Anmeldeinformationen sollten die Benutzer nicht sofort mit Ihrer Anwendung authentifizieren. Behandeln Sie den Benutzer stattdessen als "teilweise verifiziert". Dies ist ein Zustand, in dem sie die zweite Form des angeforderten Codes an ihr Telefon anzeigen kann. Der Benutzer sollte erst dann autorisiert werden, nachdem sie den richtigen Code eingereicht hat.
<code class="language-php"><?php $code = "1234"; // some random auth code $msg = $acct->sms_messages->create( "+19585550199", // "from" number "+19588675309", // "to" number "Your access code is " . $code );</code>
Der obige Code dient nur zur Illustration. In Ihrer tatsächlichen Anwendung möchten Sie möglicherweise Folgendes hinzufügen:
$_SESSION["username"]
, da der Wert neben der Speicherung des Benutzernamens als "partielle Authentifizierung" für $_SESSION["isAuthenticated"]
fungiert.
Zusammenfassung
Die Popularität erschwinglicher mobiler Geräte und IP -Telefone hat andere Kanäle hinzugefügt, um mit Benutzern zu interagieren. In diesem Artikel lernen Sie eine Möglichkeit, diese Kanäle mit dem Twilio „Cloud Communications“, einem "Cloud Communications" -Dienst, zu nutzen, indem Sie den "Cloud Communications" -Dienst nutzen. Um diese Kanäle zu nutzen, indem Multi-Faktor-Authentifizierung aktiviert wird ,. Ich hoffe, Sie finden diesen Artikel hilfreich, um Multifaktorauthentifizierung und Twilio zu verstehen. Fühlen Sie sich gerne weiter unten, um zu teilen, wie Sie Twilio in Ihrer eigenen App verwenden oder eine Multi-Faktor-Authentifizierung implementieren können. Ich würde gerne hören, was du denkst!
(Bild aus Fotolien)
FAQs (FAQs) zur Multi-Faktor-Authentifizierung mit PHP und Twilio
Wenn ein Benutzer sein Telefon verliert, kann er mit dem alternativen Code weiterhin auf sein Konto zugreifen. Diese Codes werden beim Einrichten von MFA erzeugt und sollten an einem sicheren Ort gespeichert werden. Benutzer können diese Codes anstelle der Codes eingeben, die an ihre Telefone gesendet werden.
Ja, Sie können MFA mit PHP und Twilio für große Anwendungen verwenden. Die Infrastruktur von Twilio ist so ausgelegt, dass sie eine große Anzahl von Nachrichten verarbeitet, sodass sie für Anwendungen mit einer großen Anzahl von Benutzern geeignet sind.
Sie können Ihre MFA -Implementierung testen, indem Sie ein Testkonto erstellen und den Authentifizierungsprozess abschließen. Twilio bietet auch eine Sandbox -Umgebung, in der Sie Ihren Code testen können, ohne tatsächliche Nachrichten zu senden.
Während einige MFA-Lösungen zum Nichtkodieren verwendet werden können, erfordert die Implementierung von MFA mit PHP und Twilio einige Codierungswissen. Der Prozess ist jedoch einfach und es gibt viele Ressourcen, die Ihnen helfen.
Die Kosten für die Verwendung von Twilio für MFA hängen von der Anzahl der von Ihnen gesendeten Nachrichten ab. Twilio berechnet nach Nachrichten. Je mehr Nachrichten Sie senden, desto höher ist die Gebühr. Twilio bietet jedoch wettbewerbsfähige Preise und Chargenrabatte an.
Ja, Sie können MFA mit PHP und Twilio für Nicht-Web-Anwendungen verwenden. Sie können MFA in jeder Anwendung implementieren, mit der HTTP -Anforderungen gesendet und HTTP -Antworten verarbeitet werden können.
Neben MFA bietet Twilio auch eine Reihe von Kommunikationsdiensten an, darunter Sprach, Video, Chat und E -Mail. Diese Dienste können verwendet werden, um eine Vielzahl von Anwendungen zu erstellen, von Kundendienstsystemen bis hin zu Marketing -Automatisierungstools.
Das obige ist der detaillierte Inhalt vonPHP Master | Multi-Faktor-Authentifizierung mit PHP und Twilio. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!