メニュー

Expand
ページを評価:

Two-Factor Authentication with Authy, PHP and Laravel

For new development, we encourage you to use the Verify API instead of the Authy API. The Verify API is an evolution of the Authy API with continued support for SMS, voice, and email one-time passcodes, an improved developer experience and new features including:

  • Twilio helper libraries in JavaScript, Java, C#, Python, Ruby, and PHP
  • Access via the Twilio CLI
  • Improved Visibility and Insights
  • Push authentication SDK embeddable in your own application

You are currently viewing the Authy API. The Authy API will continue to be maintained, but any new features and development will be on the Verify API. Check out the FAQ for more information and Verify API Reference to get started.

Adding Two-Factor Authentication (2FA) to your web application increases the security of your user's data by requiring something your user has to be present for step-up transactions, log-ins, and other sensitive actions. Multi-factor authentication determines the identity of a user by validating once by logging into the app, and then by validating their mobile device.

This PHP Laravel sample application is an example of a typical login flow using Two-Factor Authentication. To run this sample app yourself, download the code and follow the instructions on GitHub.

第 2 要素については、ユーザーが携帯電話を所有していることを以下のいずれかによって検証します。

  • Sending them a OneTouch push notification to their mobile Authy Client app or
  • モバイル Authy アプリを通じてユーザーにトークンを送信する
  • Sending them a one-time token in a text message.

See how VMware uses Twilio Two-Factor Authentication to secure their enterprise mobility management solution.

ここをクリックしてチュートリアルをはじめましょう!

Authy の設定

If you haven't configured Authy already, now is the time to sign up for Authy. Create your first application naming it as you wish. After you create your application, your "production" API key will be visible on your dashboard

Once we have an Authy API key we can register it as an environment variable.

        
        
        
        
        .env.example

        Authy でユーザーを登録する方法を見てみましょう。

        Register a user using Authy

        ユーザーをAuthyに登録する

        新規 ユーザー がウェブサイトにサインアップしたら、この経路を呼び出します。これにより、新しいユーザーがデータベースに保存され、そのユーザーが Authy に登録されます。

        アプリケーションをセットアップするために Authy が必要とするものは、ユーザーの E メール電話番号、および国コードだけです。二要素認証を実行するには、サインアップの時点でこの情報を必ず求める必要があります。

        ユーザーを Authy に登録すると、authy id が返されます。これは、Authy でユーザーのアイデンティティーを確認する方法となるため、非常に重要です。

              
              
              
              
              app/User.php
              OneTouchでのユーザーのログイン方法を確認する

              Authy OneTouchでログインする

              ユーザーがウェブサイトにログインしようとしたら、第 2 形式の識別をユーザーに求めます。まずは、Authy の OneTouch 検証を見てみましょう。

              OneTouch は以下のように機能します。

              • We attempt to send a User a OneTouch Approval Request.
              • ユーザー の OneTouch が有効になっている場合は、成功メッセージが返されます。
              • ユーザーが Authy アプリで「Approve」を押します。
              • Authy は、approved ステータスを持つアプリに POST リクエストを発行します。
              • ユーザーをログインさせます。
                    
                    
                    
                    
                    app/Http/Controllers/Auth/AuthController.php

                    Authy OneTouchでログインする

                    app/Http/Controllers/Auth/AuthController.php
                    OneTouchリクエストを送信する

                    OneTouchリクエストを送信する

                    ユーザーのログイン時は、ただちにOneTouchによってユーザーの身元の検証を試みます。 ユーザーがOneTouchデバイスを持っていないことが事前に分からない場合は、Authyは段階的なフォールバックを行います。

                    Authy では、メッセージやロゴなど、OneTouch リクエストを使って詳細を入力できます。details['some_detail'] を追加することにより、任意の数の詳細を簡単に送信できます。たとえば、以下のように OneTouch リクエストを送信して送金を承認するシナリオが考えられます。

                    $params = array(
                      'message' => "Request to send money to Jarod's vault",
                      'details[From]' => "Jarod",
                      'details[Amount]' => "1,000,000",
                      'details[Currency]' => "Galleons",
                    )
                    

                    リクエストを送信したら、レスポンスに基づいてユーザーの authy_status を更新する必要があります。

                          
                          
                          
                          
                          app/User.php
                          Configure OneTouch callback

                          OneTouchコールバックを構成する

                          OneTouch リクエストの送信後にユーザーが何を行ったのかをアプリで認識するためには、コールバックエンドポイントを Authy に登録する必要があります。

                          このコールバックでは、AuthyのPOSTリクエストで送信される authy_id を使用してユーザーを見つけます。 この時点では、ウェブソケットを使用して、Authy からレスポンスを受信したことをクライアントに認識させるのが理想的です。しかし、このバージョンでは極力シンプルにしておき、ユーザーのauthy_statusを更新するだけにとどめます。 

                                
                                
                                
                                
                                app/Http/Controllers/Auth/AuthyController.php

                                Authyのコールバックを使用してユーザーを更新する

                                app/Http/Controllers/Auth/AuthyController.php

                                これを処理するクライアントサイドコードを見てみましょう。

                                Handle authentication in the browser

                                二要素をブラウザーで処理する

                                サーバーサイドで何が起こっているのかについてはすでに見てきましたので、次に JavaScript がそれらのサーバーエンドポイントとどのように連係しているのかを見てみましょう。

                                OneTouch レスポンスを予期している場合は、Authy ステータスが空でないことを確認するまでまず /authy/status をポーリングします。このコントローラーを確認し、何が起こっているのかを見てみましょう。

                                      
                                      
                                      
                                      
                                      public/js/sessions.js
                                      Accept or deny Authy status

                                      2FAステップの終了

                                      authy_status承認された場合、ユーザーは保護されているコンテンツにリダイレクトされます。それ以外の場合は、リクエストが拒否されたことを示すメッセージとともにログインフォームを表示します。

                                            
                                            
                                            
                                            
                                            app/Http/Controllers/Auth/AuthyController.php

                                            Redirect user to the correct page based based on authentication status

                                            app/Http/Controllers/Auth/AuthyController.php

                                            これで終わりです! 3 つの異なるメソッドと最新の Authy テクノロジーを使用して二要素認証を実装しました。

                                            関連トピック

                                            関連トピック

                                            Twilio を使う PHP 開発者であれば、他のチュートリアルも調べてみてください。

                                            通話のトラッキング

                                            一意の電話番号を使用して、さまざまなマーケティングキャンペーンの有効性を測定します。

                                            SMS を介したサーバー通知

                                            e-mail よりも早く届き、ブロックされにくい テキストメッセージサービスはタイムリーに通知や警告に最適です。サーバー管理者に SMS・MMS で通知を送る方法を学びます。

                                            これは役に立ちましたか?

                                            Thanks for checking out this tutorial! If you have any feedback to share with us, we'd love to hear it. Connect with us on Twitter and let us know what you build!

                                            Jarod Reyes Kelley Robinson Kat King Andrew Baker Paul Kamp
                                            ページを評価:

                                            ヘルプが必要ですか?

                                            誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

                                                  
                                                  
                                                  

                                                  フィードバックくださりありがとうございます!

                                                  We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

                                                  Sending your feedback...
                                                  🎉 Thank you for your feedback!
                                                  Something went wrong. Please try again.

                                                  Thanks for your feedback!

                                                  Refer us and get $10 in 3 simple steps!

                                                  ステップ1

                                                  Get link

                                                  Get a free personal referral link here

                                                  ステップ2:

                                                  Give $10

                                                  Your user signs up and upgrade using link

                                                  ステップ3

                                                  Get $10

                                                  1,250 free SMSes
                                                  OR 1,000 free voice mins
                                                  OR 12,000 chats
                                                  OR more