2026 Chrome Email Verification APIの無効トークンをどうテストする?

無効・欠落・検証失敗のトークンを、サービス側で拒否できるか確認する手順をまとめています。アカウント状態とメール確認へのフォールバックも個別に検証し、どこまで通れば受け入れ可能か判断できます。

無効なトークンを送ったのに、登録処理が成功してしまう。
最短の対処は、サーバーで令牌を拒否し、既存のメール確認へ戻すことです。令牌の検証結果、アカウント状態、回退メールの受信を別々に確認してください。どれか一つの成功だけでは、登録フロー全体の合格とは判断できません。Chromeの公式説明でも、令牌がない場合や検証に失敗した場合は、既定のメール確認フローに戻るとされています。

アカウントセキュリティを審査する技術責任者、または段階的な公開前に失敗分岐を確認する開発者・QA向けです。
Chrome Origin Trialを自社サービスで試す場合も、対象は自社製品または許可を得た検証環境に限ってください。

最終更新日:2026年10月28日。確認先はChromeのEmail Verification API文書、サーバー側の検証ガイド、WICG提案です。仕様は試験段階で変更される可能性があるため、実装前に最新の文書も確認してください。

まず「何を証明したか」を分けます

Chrome Email Verification APIが示すのは、メール提供元のセッションを通じて、そのメールアドレスを操作できることです。メールが実際に送信されたことや、利用者が受信箱で読めたことを証明するものではありません。したがって、令牌の検証と受信確認は別のテストとして扱います。

この記事では、自社サービスが無効な令牌を拒否することと、既存のメール確認に戻ることを扱います。令牌の更新手順や、APIと従来のメール確認の優劣比較は対象外です。

Chrome for Developersの文書では、このAPIはChrome Origin Trial中の提案として説明されています。サーバーは宣言、鍵のバインディング、EVT署名を検証する必要があります。サーバー検証ガイドを実装の基準にし、実験的な仕様に対して、公式に定義されていないエラーコードや再試行動作を前提にしないでください。

テスト合格の境界を先に決めます

テストで確認する対象は、次の三つです。

  • 令牌の判定: 欠落または検証失敗の令牌を、所有権の証明として受け入れないこと。
  • アカウント状態: 未確認のアカウントが、検証失敗だけで確認済みにならないこと。
  • メール回退: 既存の確認メールが適切な環境・宛先へ送られ、リンク操作後に期待した状態へ変わること。

すべてが想定どおりでも、確認できるのはテスト環境での動作です。本番環境での到達率や、すべての受信環境での表示まで保証するものではありません。

注意:HTTPの応答だけで合否を決めないでください。成功応答が返っていても、アカウントが誤って確認済みになっていないか、回退先の確認メールが実際に使えるかを別途調べます。

令牌なしの登録はどう扱いますか?

API非対応、未署名、または要求に令牌が含まれない状態を作り、サーバーが「メール確認済み」と扱わないことを確かめます。Chrome Email Verification APIから令牌が返らない場合、公式文書が示す境界は既定の確認フローへの回退です。独自に成功扱いへ置き換えないでください。

ページの表示、サーバーログ、アカウント状態、確認メールの送信を一組で記録します。たとえば「登録要求は受理されたが、アカウントは未確認のままで、従来の確認メールを案内する」という動作なら、令牌欠落を所有権の証明と取り違えていないかを確認できます。画面の文言は自社の仕様に合わせ、公式に定められていない固定のエラー表示を前提にしないでください。

宣言が合わない令牌をどう拒否しますか?

EVTのemail、aud、nonce、iat、expを、アプリケーションが期待する値と合わない検証用ケースで確かめます。これらは検査対象となる宣言です。具体的な許容範囲や失敗時の応答は、現在の公式手順と自社実装に照らして定義してください。WICGの提案も参照し、試験中の仕様と自社の判断を混同しないようにします。

特にnonceは、異なるフォームの送信を組み合わせて試します。あるフォームで発行した値と別のフォームの値が一致しない場合、令牌を拒否し、意図しないメールアドレスのアカウントが確認済みにならないことを確認してください。ステータスコードだけで終わらせず、対象アカウント、確認状態、記録されたフォーム識別情報まで見ます。

Key Binding JWTやEVTの署名検証に失敗したらどうしますか?

署名失敗は、隔離したテスト環境で検証用データを使って再現します。正しい鍵で検証できないKey Binding JWTと、署名の検証に失敗するEVTを別々に用意し、どちらの場合も令牌が受理されず、アカウントが未確認に保たれることを確認します。

SD-JWTの仕様を定めるRFC 9901は、関連するトークン形式の参照資料です。ただし、そこに書かれた一般仕様から、このAPI固有のエラー応答や再試行回数を推測してはいけません。失敗の種別、リクエストの相関情報、アカウント状態を保存し、自社の検証処理がどの段階で拒否したかを追えるようにします。

発行元の情報と鍵の検証が食い違う場合

令牌のissと検出した発行元情報が一致しないケース、発行元メタデータを取得できないケース、公開鍵の検証が成立しないケースを分けて確認します。期待される検証に失敗した場合は令牌を拒否し、既存のメール確認へ進むことがテストの焦点です。

依存先への一時的な接続失敗と、署名や発行元の不一致は同じ原因として扱わないでください。発生時刻、相関ID、外部依存の応答、最終的なアカウント状態を記録します。一度の失敗だけでブラウザーやメール提供元の問題と断定せず、隔離環境で再現できるかを確認してください。

自社環境でメール回退を閉じる手順

メール回退は、受信メールを読むための管理されたテストアドレスで確認します。実在する第三者のアカウントを使った登録試験は避け、テストデータに個人情報を混ぜない運用にしてください。

  1. テスト専用環境で、未確認アカウントを用意します。
  2. 令牌欠落、宣言不一致、署名失敗など、対象の失敗ケースを一つだけ発生させます。
  3. サーバーの検証結果と、アカウントが未確認のままであることを記録します。
  4. そのケースでメール確認へ回退したことを確認します。
  5. テスト用受信箱で、メール本文、宛先、対象環境、確認リンクを照合します。
  6. リンクを操作し、アプリケーション側のアカウント状態が設計どおり変わることを確認します。

この手順で確かめられるのは、テストで発生させたメールを受信して読めることと、確認リンクを使った状態遷移です。本番メールの到達や、別の受信環境での表示を示すものではありません。受信先の選定にはメールアドレスのライフサイクルを確認するガイドや、受信箱とメールエイリアスの違いも参考になります。

条件ごとに合否を判断します

次のチェックリストで、各失敗ケースを合格・不合格・要調査に分けます。チェックが一つでも未完了なら、そのケースを合格にしないでください。

  • [ ] 令牌が欠落している: 令牌が拒否され、アカウントは未確認のままですか?
    はいなら既存のメール確認へ進み、受信からリンク操作まで確認します。いいえなら不合格です。令牌なしを所有権の証明として扱わないよう修正してください。
  • [ ] 宣言または署名が不正: 令牌は拒否され、対象アカウントは未確認のままですか?
    はいなら回退メールの受信と状態遷移を確認します。いいえなら不合格です。状態更新の前にサーバー検証が完了する設計へ戻し、再試験します。
  • [ ] 令牌は拒否されたが、確認メールが届かない: 受信先、メール発行処理、対象環境を切り分けられますか?
    はいなら回退処理と受信経路を個別に調べます。いいえなら要調査です。令牌の拒否だけを理由に、メール回退まで合格扱いしないでください。
  • [ ] 発行元情報の取得に失敗した: 依存先の一時障害と検証不一致を区別できる記録がありますか?
    はいなら原因ごとに再現し、期待した拒否と回退を確かめます。いいえなら要調査です。原因を区別できるログを整えてから再確認します。

無効な令牌を拒否するだけでは、登録の回復経路まで試験したことにはなりません。メール確認へ戻る分岐も自社環境で閉じて確認してください。受信試験で個人の主メールアドレスを使いたくない場合は、MyTempBoxの一時受信箱を選択肢にできます。MyTempBoxでテスト用の受信先を確認し、利用条件や受信可能な期間を画面で確かめてから、検証メールの読み取りに使ってください。

やり直せる短期タスクだと確認できましたか?

一時受信トレイを開き、1つのアドレスで完了させましょう。後から長期利用に変わった場合は、まずメールアドレスを移行してから、今回の受信作業を終了してください。

使い捨て受信トレイを作成