ホームページ >バックエンド開発 >PHPチュートリアル >PHPマスター| PHPおよびTwilioを使用した多要因認証

PHPマスター| PHPおよびTwilioを使用した多要因認証

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-26 09:02:11926ブラウズ

PHP Master | Multi-Factor Authentication with PHP and Twilio

コアポイント

  • マルチファクター認証(MFA)には、少なくとも2つの異なる検証方法が必要であり、従来の単一因子認証よりもはるかに安全です。実用的なMFAメソッドは、ユーザーにパスワードを提供するように依頼することと、SMSまたは音声通話を介して電話に送信される確認トークンを提供することです。
  • Twilioは、マルチファクター認証システムを含むインタラクティブな電話アプリケーションの作成に開発者が使用できるインフラストラクチャとAPIを提供します。開発者は、TWIML(Twilio Markup Language)とそのREST APIを使用して、電話をかけて受信し、Twilioを介してテキストメッセージを送信して受信できます。
  • Twilioを使用してマルチファクター認証を実装するには、services_twilioクラスの新しいインスタンスを作成し、アカウントプロパティを介してAPIにアクセスし、SMSメッセージを送信するか、SMSメッセージインスタンスリソースまたはcreate()メソッドを介して音声通話を開始することが含まれます。コールインスタンスリソース。
  • マルチファクター認証プロセスでは、ユーザーにログインフォームを表示してプロセスを開始し、資格情報を確認し、コードを携帯電話に送信し、正しいコードを提出した後にのみユーザーが承認されます。このプロセスをカスタマイズして、確認コードリンクを控えること、誤ったコードが提供されている場合はアカウントのロック、認証イベントのロギングなどの機能を強化できます。
ユーザーの身元を確認するには多くの方法があります。ユーザー自身(バイオメトリックなど)のいくつかの側面を参照、ユーザーが知っていること(パスワードなど)を尋ねる、またはユーザーが実際に持っているもの( RFIDカード)。従来のWebサイトは、ユーザーのパスワードのみが必要な単一因子認証を実装しています。しかし、一方で、マルチファクター認証には、少なくとも2つの異なる検証方法が必要であり、はるかに安全です。バイオメトリックを使用して、誰かのウェブサイトへのアクセスを確認することは、多くの技術的障壁と市民の自由の問題が克服されることを依然として長い道のりである可能性があります。より実用的なマルチファクター認証方法は、SMSまたは音声通話を介してユーザーに送信されたパスワードや確認トークンなど、他の2つのカテゴリからオプションを実装することです(ユーザーはパスワードを知っており、携帯電話を持っています)。これは、この記事で達成する方法を学ぶことです。ゼロから電話統合を行うとイライラする可能性があり、ほとんどの場合、独自のインフラストラクチャを構築することは実用的ではありません(ただし、コモディティハードウェアやアスタリスクなどのプログラムで実行できます)。幸いなことに、TwilioはインフラストラクチャとAPIを提供し、開発者がインタラクティブな電話アプリケーションを簡単に書き込むことができます。この記事では彼らのサービスを使用します。 TwiML(Twilio Markup Language)とそのREST APIを使用して、Twilioを介して電話をかけて送信して受信できます。 APIを直接使用するか、利用可能な補助ライブラリのいずれかを使用できます。ここで使用するライブラリは、Twilio-PHPです。これは、Twilioが公開され、公式にサポートされているライブラリです。それで、あなたはマルチファクター認証を実装する方法を学ぶ準備ができていますか?読み続ける!

php に接続しますTwilioサービスへの接続は、Twilio-PHPライブラリを含めてServices_twilioクラスの新しいインスタンスを作成するのと同じくらい簡単です。このオブジェクトのコンストラクターは、サービスを登録した後、TwilioアカウントのダッシュボードページにリストされているアカウントのSIDおよび認証トークンを受け入れます。利用可能なservices_twilioインスタンスを使用すると、アカウントプロパティを介してAPIにアクセスできます。アカウントは、Twilioアカウントを表すservices_twilio_rest_accountのインスタンスを公開します。ここでは1つのアカウントのみを使用していますが、複数のサブアカウントを使用できます。これは、ニーズに基づいて相互作用を分解するのに役立つ場合があります。 Twilioのドキュメントを読んで、サブアカウントの詳細をご覧ください。

<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>
アカウントインスタンスは、呼び出しやsms_messagesなど、他のいくつかのプロパティを公開しています。これらは、それぞれservices_twilio_rest_callsやservices_twilio_rest_smsmessagesなどのオブジェクトのインスタンスです。ただし、これらのオブジェクトをcreate()メソッド以外で使用することはめったになく、ドキュメントは「インスタンスリソース」を公開するプロパティを呼び出します。混乱を避けるために同じことをします。

テキストメッセージを送信 SMSメッセージメッセージは、SMSメッセージインスタンスリソース($ acct-&gt; sms_messages)のcreate()メソッドを介して行われます。このメソッドは、アカウントのTwilio番号(電子メールの「送信者アドレス」と同様)、受信者の番号(「受信者アドレス」)、およびメッセージテキスト(最大160文字)、次の3つのパラメーターを受け入れます。

舞台裏では、Twilio-PHPライブラリは、Twilio APIの投稿リクエストをお客様に代わって行っています。 services_twilio_rest_smsmessageのインスタンスは、メッセージに関する情報をカプセル化するコールによって返されます。ドキュメントで提供されている情報の完全なリストを表示できますが、おそらくより重要な値はステータスと価格属性によって公開されます。ステータスは、テキストメッセージのステータス(キュー、送信、送信、または失敗)を表示し、価格はアカウントに充電されたメッセージの金額を表示します。
<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>

音声通話を送信

音声呼び出しの開始は、calling instance resource($ acct-&gt; call)のcreate()メソッドを介して行われます。テキストメッセージの送信と同様に、アカウント番号、受信者番号、メッセージを提供する必要があります。ただし、この場合、メッセージはコールの性質を説明するTWIMLドキュメントのURLです。

ライブラリは再びお客様に代わって投稿リクエストを行い、音声通話を行います。呼び出された人がコールに応答すると、Twilioのプロセスは、コールバックURLのXMLで提供されたコマンドを取得および実行します。上記の音声通話を開始する例では、COLLBACKスクリプトのURLのGETパラメーターとして確認コードを渡しました。 TwilioがURLを取得すると、PHPは応答をレンダリングするときにこのパラメーターを使用します。コールフローを構築するには、少数のTWIMLタグのみが必要ですが、それらを使用して、かなり複雑なプロセス(電話ツリーメニューなど)を定義することができます。ただし、以下に示すように、このようなシナリオの基本的なコールフローは、PHPによって生成できます。
<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>

ここで使用されるTWIMLタグは、応答(ルート要素)、たとえば(Twilioが言うテキストを提供する)、および収集(ユーザー入力の収集)です。 Say Child Elementが示すテキストを発言すると、Twilioは、ユーザーが応答を入力できるように、収集して5秒間一時停止するためにユーザーの入力を聞きます。入力なしでタイミングを出した場合、それは終了してその後のテキストを実行し、コールを終了します。それ以外の場合、入力は、さらに処理するために投稿からアクションURLに送信されます。 GatherのTwilioのドキュメントは、動作と、動作を変更するために使用できる要素プロパティを説明するのに非常に優れており、いくつかの例をリストしています。すぐに読むことをお勧めします。先に進む前に、もう1つメモがあります。これにより、スピーチシンセサイザーは「1000 200番344」の代わりに「1つの2つの4つの4つ」と言って、一つずつ発音するようになります。音声統合の場合、テキストに表示されるものが常に得られるとは限りません。それがあなたのCalleeをより明確に理解することをもたらすならば、発音の会話を変更または間違えても大丈夫です。

マルチファクター認証を実装

SMSの基本的なワークフローとTwilioとの音声相互作用を学んだので、それがログインプロセスにどのように適合するかを確認する時が来ました。ここで見るものは非常にシンプルで簡単であり、明確にするために、あなた自身のログインプロセスの詳細が異なるため、添付のコードを削減しました。プロセスを開始するためのログインフォームをユーザーに表示する必要があります。フォームの提出により、資格情報を確認し、無効な資格情報を拒否しますが、有効な資格情報はすぐにアプリケーションにユーザーを認証する必要はありません。代わりに、ユーザーを「部分的に検証した」と扱います。これは、要求されたコードの2番目のフォームを表示できるようにする状態です。ユーザーは、正しいコードを提出した後にのみ承認される必要があります。

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

上記のコードは、図のみです。実際のアプリケーションでは、以下の追加を検討することをお勧めします。

  • リンクを追加して、確認コードをユーザーの電話に再送信します。
  • ユーザーがプロセスを継続しないことを決定した場合は、コード要求フォームにnlinkを追加します。上記のコードに関しては、このようなリンクは、ユーザー名の保存に加えて$_SESSION["username"]の「部分認証」フラグとして機能するため、$_SESSION["isAuthenticated"]を変更する必要があります。
  • 間違ったコードが提供されている場合は、スロットリングまたはアカウントロックを追加します。
  • パラノイアのレベルまたは直面しているコンプライアンス要件に応じて、認証イベントをどこかにログインします。 (マルチファクター認証を必要とするアプリは、通常、監査証跡を必要とするほど敏感です!)

さらに、目的のために十分に複雑な認証コードを作成することを検討することができます。 4桁のコードは非常に一般的ですが、それに限定されません。文字または英数字の値の組み合わせを使用することを選択した場合は、混乱を招く値(文字oの番号0、文字Iの番号1など)を避けることをお勧めします。

概要

手頃な価格のモバイルデバイスとIP電話の人気により、他のチャネルがユーザーと対話するためのチャネルが追加されています。この記事では、「クラウド通信」サービスである「クラウドコミュニケーション」サービスを使用して、これらのチャネルを活用する方法を学びます。マルチファクター認証を可能にすることにより、これらのチャネルを活用するため。この記事がマルチファクター認証とTwilioを理解するのに役立つと思います。以下にコメントしてください。自分のアプリでTwilioを使用する方法や多要素認証を実装する方法を共有してください。私はあなたの考えを聞きたいです!

(フォトリアからの写真)

PHPおよびTWILIO

を使用したマルチファクター認証に関する

FAQ(FAQS)
  • 多要因認証にPHPとTwilioを使用するのはどれほど安全ですか?

多因子認証(MFA)は、PHPとTwilioで非常に安全です。アカウントにアクセスする前に、ユーザーが少なくとも2つの認証方法を提供するように要求することにより、セキュリティの追加レイヤーを追加します。最初のフォームは通常、パスワードであり、2番目のフォームはテキストメッセージを介してユーザーの電話に送信されるコードです。パスワードを持っていても、不正なユーザーがアカウントにアクセスすることが難しくなります。

  • 認証プロセスをカスタマイズできますか?

はい、ニーズに合わせて認証プロセスをカスタマイズできます。 TwilioのAPIは非常に柔軟であり、特定の要件に合わせて認証プロセスを調整できます。 2番目の要素のタイプ(テキストメッセージ、音声通話、電子メールなど)、メッセージコンテンツなどを選択できます。

  • 認証コードを送信するのは、Twilioはどの程度信頼できますか?

Twilioは、認証コードを送信するための信頼できるプラットフォームです。強力なインフラストラクチャがあり、高い配送率を提供します。また、リアルタイム配信レポートを提供して、メッセージのステータスを追跡できます。

  • ユーザーが電話を失ったらどうしますか?

ユーザーが電話を失った場合、代替コードを使用してアカウントにアクセスできます。これらのコードは、MFAをセットアップするときに生成され、安全な場所に保存する必要があります。ユーザーは、携帯電話に送信されるコードの代わりにこれらのコードを入力できます。

  • 大規模なアプリケーションには、PHPとTwilioでMFAを使用できますか?

はい、大規模なアプリケーションにはPHPとTwilioでMFAを使用できます。 Twilioのインフラストラクチャは、大量のメッセージを処理するように設計されており、多数のユーザーを使用するアプリケーションに適しています。

  • MFA実装をテストする方法は?

テストアカウントを作成して認証プロセスを完了することにより、MFAの実装をテストできます。 Twilioは、実際のメッセージを送信せずにコードをテストできるサンドボックス環境も提供します。

  • エンコードなしでMFAを実装することは可能ですか?

一部のMFAソリューションは非コードに使用できますが、PHPとTwilioを使用してMFAを実装するには、コード知識が必要です。ただし、プロセスは簡単で、多くのリソースがあります。

  • MFAにTwilioを使用するのにどれくらいの費用がかかりますか?

MFAにTwilioを使用するコストは、送信するメッセージの数に依存します。 Twilioはメッセージによる料金を請求するため、送信するメッセージが多いほど、料金が高くなります。ただし、Twilioは競争力のある価格とバッチ割引を提供しています。

  • WEB以外のアプリケーションには、PHPとTwilioでMFAを使用できますか?

はい、非WEBアプリケーションにはPHPとTwilioを使用してMFAを使用できます。 HTTPリクエストを送信し、HTTP応答を処理できるアプリケーションにMFAを実装できます。

  • Twilioは他にどのようなサービスを提供していますか?
MFAに加えて、Twilioは音声、ビデオ、チャット、電子メールなどのさまざまなコミュニケーションサービスも提供しています。これらのサービスは、カスタマーサービスシステムからマーケティングオートメーションツールまで、さまざまなアプリケーションを構築するために使用できます。

以上がPHPマスター| PHPおよびTwilioを使用した多要因認証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。