Node.js

実装をテストする

サイレント認証は、SIMとモバイルデータを備えた実際のデバイスで検証するのが最適です。以下の点にご留意ください:

  • エミュレータは、Silent Authenticationが必要とするキャリア/ネットワーク・コンテキストを提供できないことが多い。
  • エミュレーターでテストする場合、SMSに頻繁にフォールバックすることが予想される。
  • サイレント認証には一般的にモバイルデータが必要です。Wi-Fiのみを使用している場合、失敗する可能性があります(それこそが、私たちが即時フォールバックパスを実装している理由です)。
  • 実際のデバイスでも、サイレント認証がすべての番号/オペレータで利用できるとは限りません。アプリは、SMSへのフォールバックを例外ではなく、通常として扱う必要があります。

プロジェクトのテスト時に検証すべきこと

In-Appで、ステータスメッセージが表示されていることを確認する:

  • サイレント認証による検証
  • またはSMSによるVerify

バックエンドのログを確認する:

  • を確認する。 /verification そして /check-code エンドポイントが呼び出される。
  • デバイスのデータを無効にして、次のことを確認してください。 /next が呼ばれている(強制フォールバック)。
  • チェック /callback のイベントがある。

テストが終われば、確認できるはずだ:

  • バックエンドは検証リクエストを作成できる
  • アンドロイド・アプリは可能だ:
    • 検証開始
    • サイレント認証が利用可能な場合は、これを処理する
    • 必要なときにSMSにきれいにフォールバックする
  • ユーザーはサイレント認証が何であるかを理解せずに認証を完了することができる。

よくある問題とそのデバッグ方法

アプリの読み込みが止まっている

  • バックエンドに到達不能
  • 誤ったバックエンドURL
  • 行方不明 android.permission.INTERNET

サイレント認証は決して機能しない

  • エミュレーターでのテスト必ず実機を使ってください
  • Wi-Fiのみのデバイス
  • オペレーターはサイレント認証をサポートしていません。

SMSが届かない

  • 電話番号の形式が正しくない(E.164でなければならない)
  • 強制フォールバックが呼び出されない
  • レート制限または以前の試行がまだ有効

/next 失敗

  • これは致命的ではありません。最悪の場合、アプリはタイムアウトを待つ(デフォルトは20秒)。
  • Verifyは継続され、最終的には自動的にフォールバックする
  • アプリはSMS入力を表示すべき

次はどうする?

これで、サイレント認証とSMSへのフォールバックを備えた、完全でテスト可能な2FAフローが完成しました。設計を次のレベルに引き上げることができる:

  • 永続ストレージ(Redis/Postgres)
  • 料金制限と乱用防止
  • ポーリングまたはリアルタイムのステータス更新
  • 本番展開