Firebase 電話番号の確認

Firebase Phone Number VerificationFirebase PNV)は、ユーザーの電話番号を迅速かつ安全に確認する方法です。SMS ベースの確認では、ユーザーがテキスト メッセージからコードを受け取って入力する必要がありますが、Firebase PNV では、接続された携帯通信会社からデバイスの SIM の電話番号を 1 回タップするだけで直接取得します。これにより、ユーザーの負担が軽減され、SMS メッセージの配信に依存しないため信頼性が向上し、SMS の使用時に一般的に悪用される不正行為のベクトルが排除されます。

主な機能

携帯通信会社が信頼できる情報源である場合 Firebase PNV を使用すると、Google は SIM の確認済みの電話番号を携帯通信会社から直接取得し、アプリを現在実行しているデバイスの番号を通知します。SMS OTP では、ユーザーが電話番号にアクセスできるかどうかしか確認できません。
スタンドアロンで使用するか、ID プロバイダと併用する Firebase PNV は、単独で電話番号の確認方法として簡単に統合して使用することも、Firebase Authentication や独自の認証システムと組み合わせてログイン方法として使用することもできます。
利用可能な運送業者を自動的に使用する Firebase PNV SDK を使用して互換性を検出し、デバイスで Firebase PNV がまだサポートされていない場合は、SMS などの別の方法にフォールバックできます。Firebase PNV は、世界中の携帯通信会社で順次利用可能になります。新しい携帯通信会社が利用可能になると、アプリに特別な変更を加えることなく、それらの携帯通信会社を自動的に使用できるようになります。参加している携帯通信会社のリストについては、携帯通信会社のサポートをご覧ください。
SMS フィッシング攻撃を排除する Firebase PNV は電話番号を確認するための SMS メッセージを送信しないため、ユーザーはアプリからワンタイム パスコードを含むメッセージが送信されることを想定していません。このため、アカウントの乗っ取り攻撃に利用される可能性があります。

仕組み

電話番号の確認リクエストを行うと、Firebase PNV:

  1. ユーザーのデバイスと携帯通信会社がサポートされていることを確認します。

  2. アプリで電話番号を共有することについてユーザーの同意を得ます。

  3. SIM に割り当てられた携帯通信会社と連携して、確認済みの電話番号を取得します。

  4. 通常、ユーザーの同意から 1 ~ 3 秒で、確認済みの電話番号を含む署名付きトークンがアプリに返されます。

このトークンの署名を確認すると、アプリはユーザーの確認済みの電話番号を取得します。このトークンは、電話番号ベースのログインフローの一部として使用することもできます(Firebase Authentication や独自の認証バックエンドを使用するなど)。

実装パス

Firebase プロジェクトを設定する Firebase コンソールで、オンボーディングの手順を完了して、Firebase プロジェクトの課金と Firebase Phone Number Verification API を有効にします。
SDK をインストールして初期化する アプリのプラットフォーム用の Firebase PNV SDK をインストールします。この SDK では、OAuth ブランドの確認が正常に完了している必要があります。
説明画面をデザインする (推奨)正式なユーザー同意 UI をトリガーする前に、番号を取得する SIM を選択する必要があること、およびこれが SMS OTP よりも高速で安全であることを説明します。これにより、混乱を減らし、新しい電話番号確認フローについてユーザーをトレーニングできます。
デバイスと携帯通信会社の互換性を確認する (推奨)アプリの起動時に、Firebase PNV SDK を使用して、デバイスとその携帯通信会社が Firebase PNV に対応していることを確認します。互換性がある場合は、説明画面を表示し、同意を求めます。そうでない場合は、SMS などの電話番号確認の以前の方法を使用します。
確認済みの電話番号をリクエストする Firebase PNV SDK を使用して、携帯通信会社からデバイスの確認済みの電話番号をリクエストします。これにより、ユーザーの同意がトリガーされます。説明画面は、ユーザーが同意を完了する準備を整えるのに役立ちます。
レスポンス トークンを検証する Firebase PNV サービスからのレスポンスで、署名付きトークンを取得します。このトークンはアプリのバックエンドに送信できます。バックエンドで、トークンの署名を検証します。署名が有効な場合、トークンにはデバイスの確認済みの電話番号が含まれます。

次のステップ

  • Firebase PNV は、検証ごとに費用が発生する有料サービスです。詳細については、料金のページをご覧ください。
  • Android アプリで Firebase PNV を使用する方法については、Android スタートガイドをご覧ください。