Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

Expand
Rate this page:

Thanks for rating this page!

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

SMS Two-Factor Authentication with Ruby and Sinatra

この Sinatra アプリケーション例では、Twilio を使用して SMS 二要素認証を実装する方法を紹介します。

二要素認証(2FA)をウェブアプリケーションに追加すると、ユーザーのデータのセキュリティーが向上します。多要素認証では、2 つのステップでユーザーのアイデンティティーを特定します。

  1. まず、E メールとパスワードでユーザーを検証します。
  2. 二番目は、ワンタイムの検証コードを送信することで、モバイルデバイスを使用して検証します。

ユーザーが検証コードを入力すれば、そのアカウントの所有を確認できます。これが標準的な SMS の実装です。

        
        
        
        
        lib/verification_sender.rb

        Send verification code

        lib/verification_sender.rb
        はじめましょう!

        検証コードを生成する

        ユーザーがログインしたら、検証コードを送信する必要があります。

        検証コードを生成するには、引数として 範囲を取ることができる Random#rand を使用します。現在の実装を考慮すると、6 桁の検証コード100000999999 のいずれかの数値になります。

              
              
              
              
              lib/code_generator.rb

              検証コードを生成する

              lib/code_generator.rb

              次に、Twilio を使用して SMS でこれを送信する方法を見てみましょう。

              検証コードを送信する

              検証コードを送信する

              Twilio ヘルパーライブラリーを使用すれば、SMS を簡単に送信できます。

              まず、クレデンシャルを使って Twilio クライアントのインスタンスを作成する必要があります。後は、REST API を使用して SMS を送信するには、必要なパラメーターで client.messages.create() を呼び出すだけです。

              クレデンシャルは Twilio Account で確認できます。

                    
                    
                    
                    
                    lib/message_sender.rb

                    検証コードを送信する

                    lib/message_sender.rb

                    We've seen how we will use the Twilio Client to send the SMS verification code. Now let's see how our controller will use this utility.

                    ユーザーを登録する

                    ユーザーを登録する

                    ユーザーがウェブサイトにサインアップすると、このコントローラーがユーザーを作成し、検証コードを送信します。

                    二要素認証を実行するには、ユーザーの電話番号を求める必要があります。

                    send_verification_to メソッドを実装する方法を見てみましょう。

                          
                          
                          
                          
                          routes/users.rb

                          ユーザーを登録する

                          routes/users.rb

                          Now let's take a closer at how to proceed with the 2-step verification.

                          Let's Put It All Together!

                          すべてを組み合わせる

                          これまでのステップで作成してきたビルディングブロックを使用し、いよいよすべてを組み合わせることができます。

                          ユーザーを検証するために確認する必要があるため、検証コードでユーザーを更新していることに注意してください。

                                
                                
                                
                                
                                lib/verification_sender.rb

                                さあいよいよ、2要素認証の実装への第2段階の幕開けです……

                                2段階の検証を実装する

                                2段階の検証を実装する

                                ユーザー検証コードの SMS を受け取った場合、与えられたコードが有効であることを確認する必要があります。

                                この検証では、ユーザーに送信された検証コードとフォームにユーザーが入力した検証コードを比較します。

                                検証が成功した場合は、保護されているコンテンツへのアクセスが許可されます。検証が成功しなかった場合は、再度検証コードの入力を求めます。

                                      
                                      
                                      
                                      
                                      routes/confirmations.rb

                                      2段階の検証を実装する

                                      routes/confirmations.rb

                                      一丁上がり! これで皆さんのアプリケーション内で使用できるSMSの2要素認証が実装できました。

                                      関連トピック

                                      関連トピック

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

                                      SMS・MMS 通知

                                      E メールよりも早く届き、ブロックされにくい テキストメッセージはタイムリーなアラートや通知に最適です。

                                      自動アンケート

                                      通話または SMS テキストメッセージを介して調査を実施し、ユーザーから構造化データを迅速に収集します。

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

                                      Thanks for checking out this tutorial! If you have any feedback to share with us, please reach out on Twitter... we'd love to hear your thoughts, and know what you're building!

                                      Agustin Camino Jose Oliveros Andrew Baker David Prothero Kat King Hector Ortega
                                      Rate this page:

                                      ヘルプが必要ですか?

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