Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Multi-Faktor-Authentifizierung mit PHP und Twilio

PHP Master | Multi-Faktor-Authentifizierung mit PHP und Twilio

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2025-02-26 09:02:11926Durchsuche

PHP Master | Multi-Factor Authentication with PHP and Twilio

Kernpunkte

    Die
  • Multifaktorauthentifizierung (MFA) erfordert mindestens zwei verschiedene Verifizierungsmethoden, die viel sicherer sind als herkömmliche Einzelfaktorauthentifizierung. Eine praktische MFA -Methode besteht darin, den Benutzer aufzufordern, ein Passwort und ein Bestätigungs -Token über SMS oder Sprachanrufe an sein Telefon anzugeben.
  • Twilio bietet Infrastruktur und APIs, mit denen Entwickler interaktive Telefonanwendungen, einschließlich Multi-Faktor-Authentifizierungssysteme, schreiben können. Entwickler können Twiml (Twilio Markup Language) und seine REST -API verwenden, um Anrufe zu tätigen und zu empfangen und Textnachrichten über Twilio zu senden und zu empfangen.
  • Verwenden von Twilio zum Implementieren der Multi-Faktor-Authentifizierung beinhaltet das Erstellen einer neuen Instanz der DISSICE_TWILIO-Klasse, des Zugriffs auf die API über die Kontokonto-Eigenschaft und das Senden von SMS-Nachrichten oder das Initiieren von Sprachanrufen über die Methode create () der SMS-Nachrichteninstanzressource oder über die SMS-Nachrichteninstanz-Ressource oder über die Ressource für SMS (). die Anrufinstanzressource.
  • Der Multi-Factor-Authentifizierungsprozess umfasst die Anzeige des Benutzers ein Anmeldeformular, um den Prozess zu starten, seine Anmeldeinformationen zu überprüfen, seinen Code an das Telefon zu senden und den Benutzer erst zu autorisieren, nachdem sie den richtigen Code eingereicht hat. Dieser Vorgang kann angepasst werden und verbessert Funktionen wie die Wiedergabe eines Bestätigungscode -Links, die Verriegelung eines Kontos, wenn ein falscher Code bereitgestellt wird, und die Protokollierung von Authentifizierungsereignissen.

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

senden

Starten 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:

  • Fügen Sie einen Link hinzu, um den Bestätigungscode zum Telefon des Benutzers weiterzugeben.
  • Wenn der Benutzer beschließt, den Vorgang nicht fortzusetzen, fügen Sie dem Codeanforderungsformular einen Unglück hinzu. In Bezug auf den obigen Code muss ein solcher Link nicht festgelegt sein $_SESSION["username"], da der Wert neben der Speicherung des Benutzernamens als "partielle Authentifizierung" für $_SESSION["isAuthenticated"] fungiert.
  • Wenn der falsche Code bereitgestellt wird, fügen Sie die Drosselung oder die Kontosperrung hinzu.
  • Anmelden das Authentifizierungsereignis irgendwo in Abhängigkeit von Ihrem Niveau an Paranoia oder den Compliance -Anforderungen, denen Sie konfrontiert sind. (Apps, die eine Multi-Faktor-Authentifizierung erfordern
Zusätzlich möchten Sie in Betracht ziehen, einen ausreichend komplexen Authentifizierungscode für Ihre Zwecke zu erstellen. 4-stellige Codes sind sehr häufig, aber Sie sind nicht darauf beschränkt. Wenn Sie eine Mischung aus Buchstaben oder alphanumerischen Werten verwenden, empfehle ich, verwirrende Werte zu vermeiden (z. B. Nummer 0 mit Buchstabe O, Nummer 1 mit Buchstaben I usw.).

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

  • Wie sicher ist es, PHP und Twilio für die Multi-Faktor-Authentifizierung zu verwenden?
Multifaktorauthentifizierung (MFA) ist mit PHP und Twilio sehr sicher. Es fügt eine zusätzliche Sicherheitsebene hinzu, indem Benutzer mindestens zwei Authentifizierungsweisen bereitstellen müssen, bevor sie auf ihr Konto zugreifen. Das erste Formular ist normalerweise ein Passwort, und das zweite Formular kann ein Code sein, der über Textnachrichten an das Telefon des Benutzers gesendet wird. Selbst wenn sie ein Passwort haben, erschwert dies nicht autorisierte Benutzer, auf ihre Konten zuzugreifen.

  • Kann ich den Authentifizierungsprozess anpassen?
Ja, Sie können den Authentifizierungsprozess an Ihre Anforderungen anpassen. Die API von Twilio ist sehr flexibel und ermöglicht es Ihnen, den Authentifizierungsprozess an Ihre spezifischen Anforderungen anzupassen. Sie können den Typ des zweiten Faktors (z. B. Textnachrichten, Sprachanrufe oder E -Mails), Nachrichteninhalt und mehr auswählen.

  • Wie zuverlässig ist Twilio, einen Authentifizierungscode zu senden?
Twilio ist eine zuverlässige Plattform zum Senden von Authentifizierungscodes. Es hat eine starke Infrastruktur und bietet hohe Lieferraten. Es enthält auch Echtzeit-Zustellungsberichte, sodass Sie den Status von Nachrichten verfolgen können.

  • Was ist, wenn der Benutzer sein Telefon verliert?

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.

  • Kann ich MFA mit PHP und Twilio für große Anwendungen verwenden?

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.

  • Wie testet ich die MFA -Implementierung?

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.

  • Ist es möglich, MFA ohne Codierung zu implementieren?

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.

  • Wie viel kostet es, Twilio für MFA zu verwenden?

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.

  • Kann ich MFA mit PHP und Twilio für Nicht-Web-Anwendungen verwenden?

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.

  • Welche anderen Dienste bietet Twilio an?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn