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?

Two-Factor Authentication with Authy, Java and Servlets

この Java Servlets サンプルアプリケーションは、Authy を使用して二要素認証(2FA)を実証します。このサンプルアプリを自分で実行するには、コードをダウンロードし、GitHub の指示に従ってください

二要素認証(2FA)をウェブアプリケーションに追加すると、ユーザーのデータのセキュリティーが向上します。多要素認証では、まずアプリへのログインによって検証した後、Authy を使用してモバイルデバイスで検証することで、ユーザーのアイデンティティーを特定します。

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

        
        
        
        
        はじめましょう!

        Configure Authy

        まだ Authy にサインアップしていない場合は、ここでサインアップします。最初のアプリケーションを作成し、任意の名前を付けます。アプリケーションを作成すると、プロダクション API キーがダッシュボードに表示されます。

        Authy API Key

        Authy API キーを入手したら、この .env ファイルに保存します。このファイルは、アプリの環境変数を設定するのに役立ちます。

        場合によっては、Authy ダッシュボードの OneTouch セクションでアプリケーションのコールバック URL も設定する必要があります。詳細については、プロジェクトの README を参照してください。

              
              
              
              
              src/main/java/com/twilio/authy2fa/servlet/RegistrationServlet.java

              Configure Authy

              src/main/java/com/twilio/authy2fa/servlet/RegistrationServlet.java

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

              Register a user using Authy

              ユーザーをAuthyに登録する

              新規ユーザーがウェブサイトにサインアップしたら、このコントローラーを呼び出します。このコントローラーは、データベースへの新規ユーザーの保存と Authy へのユーザーの登録を処理します。

              All Authy needs to get a user set up for your application is the email, phone number and country code. In order to do two-factor authentication, we need to make sure we ask for these things at the point of sign up.

              Once we register the user with Authy we can get the user's authy_id back. This is very important since it's how we will verify the identity of our User with Authy.

                    
                    
                    
                    
                    src/main/java/com/twilio/authy2fa/servlet/RegistrationServlet.java

                    ユーザーをAuthyに登録する

                    src/main/java/com/twilio/authy2fa/servlet/RegistrationServlet.java

                    Having registered our user with Authy, we then can use Authy's OneTouch feature to log them in.

                    See how to log a user in with Authy

                    Authy OneTouchでログインする

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

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

                    • We check that the user has the Authy app installed.
                    • In case they do, they will receive a push notification on their device.
                    • ユーザーが Authy アプリで「Approve」を押します。
                    • Authy makes a POST request to our app with an approved status.
                    • ユーザーをログインさせます。
                          
                          
                          
                          
                          TwilioDevEd/authy2fa-servlets/src/main/java/com/twilio/authy2fa/service/ApprovalRequestService.java

                          Implement One Touch Approval

                          TwilioDevEd/authy2fa-servlets/src/main/java/com/twilio/authy2fa/service/ApprovalRequestService.java

                          Now let's look at how to send a OneTouch request.

                          OneTouchリクエストの送信方法

                          OneTouchリクエストを送信する

                          When our user logs in, our app decides which two-factor authentication provider will be used. It can be Authy OneTouch or an SMS token.

                          ユーザーが登録済みの OneTouch デバイスを所有している場合は、Authy OneTouch が使用されます。

                          We use the sendApprovalRequest method to create an approval request. It takes an ApprovalRequestParamater object with at least the following properties configured:

                          • Authy ユーザー ID
                          • デバイスに表示されるメッセージ

                          parameters オブジェクトの構築方法に関する例を以下に示します。

                          ApprovalRequestParams parameters = new ApprovalRequestParams.Builder(
                            Integer.valueOf(user.getAuthyId()),
                            "Request login to Twilio demo app")
                            .addDetail("email", "alice@example.com")
                            .addDetail("name", "Alice")
                            .addHiddenDetail("phoneNumber", "555-5555")
                            .build();
                          
                                
                                
                                
                                
                                TwilioDevEd/authy2fa-servlets/src/main/java/com/twilio/authy2fa/service/ApprovalRequestService.java

                                OneTouchリクエストを送信する

                                TwilioDevEd/authy2fa-servlets/src/main/java/com/twilio/authy2fa/service/ApprovalRequestService.java

                                Once we send the request we need to update our user's AuthyStatus based on the response. But first we have to register a OneTouch callback endpoint.

                                コールバックエンドポイントの登録方法を確認する

                                OneTouch コールバックの設定

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

                                注:リクエストが Authy から来ていることを確認するために、Authy から来ているリクエストではないと思われる場合にそのリクエストを停止するヘルパーメソッド validate を記述しました。

                                コールバックでは、Authy POST リクエストで送信された Authy ID を使用してユーザーをルックアップします。この時点では、ウェブソケットを使用して、Authy からレスポンスを受信したことをクライアントに認識させるのが理想的です。ただし、このバージョンでは、単純なままにしておき、ユーザーの AuthyStatus を更新するだけにします。クライアントサイドのコードで行うべきことは、ユーザーをログインさせる前に user.AuthyStatus == "approved" を確認することです。

                                      
                                      
                                      
                                      
                                      src/main/java/com/twilio/authy2fa/servlet/authy/CallbackServlet.java

                                      Configure OneTouch Callback to validate request

                                      src/main/java/com/twilio/authy2fa/servlet/authy/CallbackServlet.java

                                      Our application is now capable of using Authy for two-factor authentication. However, we are still missing an important part: the client-side code that will handle it.

                                      Handle authentication in the browser

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

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

                                      OneTouch レスポンスを予期している場合は、Authy ステータスが空でないことを確認するまで /authy/status のポーリングを行います。

                                            
                                            
                                            
                                            
                                            src/main/webapp/javascript/application.js

                                            Let's take a closer look at how we check the login status on the server.

                                            Check the user's login status

                                            ログインステータスをチェックする

                                            これが、JavaScript がポーリングしているエンドポイントです。ユーザーの Authy ステータスを待ち受けています。

                                                  
                                                  
                                                  
                                                  
                                                  src/main/java/com/twilio/authy2fa/servlet/authy/OneTouchStatusServlet.java

                                                  ログインステータスをチェックする

                                                  src/main/java/com/twilio/authy2fa/servlet/authy/OneTouchStatusServlet.java

                                                  Finally, we can confirm the login.

                                                  Confirm the login

                                                  2FA ステップを完了する

                                                  AuthyStatus承認された場合、ユーザーはアカウントページにリダイレクトされます。それ以外の場合は、リクエストが拒否された許可されなかったかどうかを示すメッセージとともにログインフォームを表示します。

                                                        
                                                        
                                                        
                                                        
                                                        src/main/java/com/twilio/authy2fa/servlet/authentication/ConfirmLogInServlet.java

                                                        Redirect user to the right page based based on authentication status

                                                        src/main/java/com/twilio/authy2fa/servlet/authentication/ConfirmLogInServlet.java

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

                                                        次はどこでしょうか?

                                                        次はどこでしょうか?

                                                        Twilio を使う Java 開発者であれば、他のチュートリアルもお楽しみください。

                                                        SMS・MMS 通知

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

                                                        Click-To-Call

                                                        クリックトゥコールはウェブトラフィックをボタンのクリック1つで、電話のトラフィックに変換します。

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

                                                        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!

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

                                                        ヘルプが必要ですか?

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