メニュー

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?

Account Verification with Authy, Node.js and Express

アプリケーションにユーザーアカウント検証を実装する準備はできましたか? どのような仕組みになっているのか概要を以下に示します。

  1. ユーザーはサインアップフォームに電話番号を含むデータを入力することで登録プロセスを開始します。
  2. The authentication system sends a one-time password to the user's mobile phone to verify the phone number.
  3. The user enters the one-time password into a form to complete registration.
  4. ユーザーに成功ページが表示され、アカウントが作成されたことを示すSMSを受診します。

ビルディングブロック

これを行うには、以下の Twilio 駆動型 API を操作します。

Authy REST API

  • Users Resource: You will need to create Authy users to send and verify one-time passwords.
  • SMSリソース: AuthyにワンタイムパスワードをSMS経由でユーザーに送信するよう指示します。
  • Verifyリソース: 登録時にWebフォームでユーザーによって入力されたトークンの検証に使用されます。

Twilio REST API

  • メッセージリソース:ユーザーがアカウントを作成した後に、Twilio を直接使用して確認メッセージをユーザーに送信します。

はじめましょう!

ここをクリックして次のステップに進みます

ユーザーモデル

真っ先にやらなければならないのは、アプリケーションのユーザーに対するモデルオブジェクトを作成することです。Authy を使う 2FA チュートリアルUser モデルのコードもたくさん借用します。このアプリケーションでは、永続性のために MongoDB を使いますが、コードでは、MongoDB によってバックアップされる上位オブジェクトモデリングツールである Mongoose と主にインターフェイスします。

モデルの authyId プロパティーに注目してください。これは、Authy API との統合をサポートするために必要です。 このプロパティーはすぐには使用しませんが、Authyとの統合のために後々必要となります。

One of the properties on the User model is the password. It is not in scope for this tutorial, but take note: you'll probably want it later for logging in a returning user.

        
        
        
        
        models/User.js

        Now that you've created your user model, let's check out the form template for creating a user.

        Take a look at the user registration form

        The New User Form Template

        When we create a new user, we ask for a name, e-mail address, password and mobile number including country code. In order to validate the user account we use Authy to send a one-time password via SMS to this phone number.

              
              
              
              
              views/users/create.jade

              Form template for user creation

              views/users/create.jade

              これでユーザーはログインしましたが、検証はまだです。次のステップでは、Authy を使ってユーザーを検証する方法について学びます。

              Authyと協調動作するようアプリケーションを構成する

              Authy の設定

              config.js には、アプリケーションの設定パラメーターがリストされています。ほとんどの設定パラメーターは、システム環境変数から取得されます。これは、機密に属する値(API キーなど)にアクセスするのに便利な方法です。これにより、それらの値を誤ってソースコントロールにチェックインすることが防止されます。

              Now, we need our Authy production key (sign up for Authy here). Once you create an Authy application, the production key is found on the dashboard:

              Authy ダッシュボード

                    
                    
                    
                    
                    config.js

                    次に、User モデルに移動して、Authy クライアントを設定し、インスタンスメソッドを作成してワンタイムパスワードを送信する必要があります。

                    Learn how to send a one-time token to a new user

                    検証トークンの送信

                    When it comes time to actually send the user a verification code, we do that in a User model function.

                    Before sending the code, an Authy user needs to exist and correlate to our User model in the database. If the authyId for our user instance hasn't been set, we use the Authy API client to create an associated Authy user and store that ID.

                    Once the user has an authyId, we can actually send a verification code to that user's mobile phone using the Authy API client.

                          
                          
                          
                          
                          models/User.js

                          After the user receives the verification code, they will pass it to the application using this form.

                          Let's check out the controller that handles the form.

                          Handle form submission

                          コードの検証:コントローラー

                          このコントローラー関数はフォームの送信を処理します。 他のものより少し長くなりますが、その分多くのことを行なっています。 下記を行うために必要です:

                          • Load a User model for the current verification request.
                          • Use an instance function on the model object to verify the code that was entered by the user.
                          • If the code entered was valid, it will flip a boolean flag on the user model to indicate the account was verified.

                          Take a look at the User model to see the instance method that handles verifying the code with Authy.

                                
                                
                                
                                
                                controllers/users.js

                                Now let's see how we can use Authy to actually verify the code.

                                Verify the user's code with Authy

                                コードの検証:モデル

                                This instance function is a thin wrapper around the Authy client function that sends a candidate password to be verified. We call Authy's built-in verify function, and then immediately call a passed callback function with the result.

                                      
                                      
                                      
                                      
                                      models/User.js

                                      This is a great start, but what if your code never reaches the end user's handset? Authy can help us to re-send a missing code.

                                      How to handle exceptions

                                      コードの再送信

                                      このコントローラー関数は、リクエストに関連付けられている User モデルをロードし、先に定義したものと同じインスタンス関数を使用してコードを再送信します。

                                            
                                            
                                            
                                            
                                            controllers/users.js

                                            Resend a user's code

                                            controllers/users.js

                                            To wrap things up, let's let the user know that their account has been verified via a success page and an SMS to their device.

                                            Wrap it up with a user success page!

                                            ユーザー詳細ページの表示

                                            このコントローラー関数は、ユーザーのフルネームが含まれる Jade テンプレートをレンダリングし、ユーザーの verified プロパティーをチェックしてそのユーザーが検証されているかどうかを示します。

                                                  
                                                  
                                                  
                                                  
                                                  controllers/users.js

                                                  Show details about a user

                                                  controllers/users.js

                                                  This should suffice for confirmation in the browser that the user has been verified. Let's see how we might send a confirmation via text message.

                                                  Send a confirmation SMS with Twilio

                                                  メッセージの送信

                                                  Here, we add another instance function to the model that will send a text message to the user's configured phone number. Rather than just being a one-time password, this can be anything we wish.

                                                        
                                                        
                                                        
                                                        
                                                        models/User.js

                                                        Congratulations! You now have the power to register and verify users with Authy and Twilio SMS. Where can we take it from here?

                                                        関連トピック

                                                        次はどこでしょうか?

                                                        Twilioを扱うNode開発者の皆さんには、これらの他のチュートリアルも参考になるでしょう。

                                                        Click-To-Call

                                                        ウェブページのボタンを押して、電話を介して訪問者をライブサポートまたはセールス担当者に接続します。

                                                        自動アンケート

                                                        音声通話またはSMSのテキスト・メッセージで行うアンケートで、構造化データをエンドユーザーから素早く収集しましょう。

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

                                                        このチュートリアルをお読みいただき、ありがとうございます。 ご意見やご感想などございましたら、ぜひお聞かせください。 Twitterからご連絡いただき、どんなものを構築されているかお聞かせください!

                                                        Jarod Reyes Jose Oliveros Agustin Camino Kat King Hector Ortega
                                                        Rate this page:

                                                        ヘルプが必要ですか?

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