メニュー

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 Rails

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

このアプリケーションを自分で実行するには、コードをダウンロードし、GitHub の指示に従ってください

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

  1. First, we validate the user with an email and password
  2. Second, we validate using a mobile device, by sending them a one-time verification code

ユーザーが検証コードを入力すれば、SMS をユーザーが受け取り、ユーザーが実際にその人であることを確認できます。これが標準的な SMS の実装です。

        
        
        
        
        lib/confirmation_sender.rb

        Send verification code

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

        検証コードを生成する

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

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

              
              
              
              
              lib/code_generator.rb

              検証コードを生成する

              lib/code_generator.rb

              続いて、これをTwilioのSMSで送信する方法を見てみましょう。

              検証コードを送信する

              検証コードを送信する

              The Twilio Ruby helper library allows us to easily send an SMS.

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

              You can find the necessary credentials in the Twilio Console.

                    
                    
                    
                    
                    lib/message_sender.rb

                    検証コードを送信する

                    lib/message_sender.rb

                    Now that we know how to generate the verification code and send it, let's now look at how to kick off the signup process.

                    ユーザーを登録する

                    ユーザーを登録する

                    When a user signs up for our website, this controller creates the user and sends them a verification code.

                    In order to do two-factor authentication we need to make sure we ask for the user's phone number.

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

                          
                          
                          
                          
                          app/controllers/users_controller.rb

                          ユーザーを登録する

                          app/controllers/users_controller.rb

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

                          Let's Put It All Together!

                          すべてを組み合わせる

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

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

                                
                                
                                
                                
                                lib/confirmation_sender.rb

                                Send verification code

                                lib/confirmation_sender.rb

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

                                2段階の検証を実装する

                                2 ステップ検証の実装

                                When the user receives an SMS with the verification code we need to ensure the given code is valid.

                                This validation is achieved by comparing the user's verification code with the verification code the user inputs on the form.

                                If the validation was successful the application allows the user to have access to the protected content. Otherwise, the application will prompt for the verification code once again.

                                      
                                      
                                      
                                      
                                      app/controllers/confirmations_controller.rb

                                      2 ステップ検証の実装

                                      app/controllers/confirmations_controller.rb

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

                                      関連トピック

                                      関連トピック

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

                                      ワークフローの自動化

                                      ビジネスに重要なワークフローを自動化することで、レスポンスレートを上げます。このチュートリアルでは、貸し別荘会社のスケール可能な状態の自動 SMS ワークフローを構築する方法を学びます。

                                      マスクされた番号

                                      音声通話およびSMSを使い匿名でユーザー同士を接続しプライバシーを保護します。使い捨ての電話番号をオンデマンドで用意し、2人のユーザーが電話番号など個人情報を交換しなくても通話できる方法を学びます。

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

                                      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
                                      Rate this page:

                                      ヘルプが必要ですか?

                                      We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.