Email Verification Protocol: Privacy-preserving browser-mediated verified autofill
This spec defines a browser-mediated email verification using SD-JWT+KB and DNS delegation to deliver verified emails without email delivery or redirects, improving privacy and UX.
GitHub WICG/email-verification-protocol Updated 2025-11-12 Branch main Stars 301 Forks 12
Web Standards Browser API Autofill Email Verification Privacy-preserving Security Tokens DNS Delegation WICG

💡 Deep Analysis

4
What are common implementation mistakes, troubleshooting steps, and best practices? How to quickly locate root causes of verification failures?

Core Analysis

Core Question: How to quickly detect and fix common implementation issues to keep verification flows stable?

Technical Analysis

  • Common Error Categories:
  • Configuration: malformed/missing DNS TXT or wrong .well-known metadata.
  • Signature/Hash: KB hash mismatch, differing hash algorithms, or kid mismatch.
  • Network/Auth: Browser-to-issuer requests blocked by SameSite/CORS or missing authentication cookies.
  • Key Management: Improper JWKS rotation.

Troubleshooting Steps (Priority Order)

  1. DNS Layer: Ensure _email-verification.<domain> TXT resolves and content is exact.
  2. Metadata Check: Fetch .well-known/email-verification and verify issuance_endpoint and jwks_uri are correct and hostnames end with the issuer domain.
  3. Signature & Hash: Split SD-JWT and KB server-side; verify issuer signature with JWKS and that the KB contains the correct hash of the SD-JWT.
  4. JWKS & kid: Ensure JWKS includes the public key and matching kid for verification.
  5. Network Debugging: Use browser devtools or proxies to confirm requests to the issuer carry cookies and are not blocked by CORS.
  6. Time & TTL: Check system clock, token lifetimes, and cached TTLs for expiry issues.

Best Practices

  1. Publish and test canonical example DNS and .well-known files.
  2. Add end-to-end CI tests covering DNS, metadata, crypto, and browser request behavior.
  3. Log detailed information (kid, hash, issuer domain, error codes) to aid diagnostics.

Caveats

Start debugging with configuration (DNS/metadata); without good logging and sample configs, diagnosis becomes much harder.

Summary: Follow a configuration -> metadata -> crypto -> network debugging order, supported by automation and detailed logs, to quickly identify root causes of verification failures.

87.0%
How do SD-JWT+KB provide security and privacy in this design? What are the technical advantages and limitations?

Core Analysis

Core Question: How does SD-JWT+KB ensure token validity while preventing misuse and protecting privacy?

Technical Analysis

  • How It Works: The issuer signs an SD-JWT containing email and email_verified; the browser generates a key and signs a KB JWT that carries a hash of the SD-JWT. The combined SD-JWT+KB lets the RP verify the issuer signature via JWKS and the presenter via the KB public key.
  • Security Advantages:
  • Presenter Binding: KB ties the issuance token to the browser private key, reducing replay or reuse on other clients.
  • Issuance/Presentation Separation: The issuer does not learn the RP identity, improving privacy.
  • Standards-based: JWT/JWKS allow existing libraries and key rotation.
  • Limitations & Risks:
  • Relies on secure browser-side key management and correct KB implementation.
  • Browser-to-issuer requests that use cookies can face SameSite/CORS constraints.
  • The selective-disclosure aspects of SD-JWT are unused, leaving some privacy improvements unexploited.

Practical Recommendations

  1. Protect browser private keys in a non-exportable, secure store.
  2. RPs must validate SD-JWT signature, KB signature, and hash consistency server-side and compare DNS/issuer metadata.
  3. Use short-lived tokens and revocation policies to limit long-term misuse.

Caveats

If browser implementation or cookie policy is weak, key-binding can fail or cross-origin requests may be blocked—plan fallback behavior.

Summary: SD-JWT+KB provides strong anti-replay and privacy properties but depends critically on secure browser implementation, key management, and cross-origin authentication behavior.

86.0%
As an RP (backend developer), what are the main integration steps, learning curve, and common pitfalls?

Core Analysis

Core Question: RPs must reliably receive and validate SD-JWT+KB presentation tokens, bind results to sessions, and provide fallbacks.

Technical Analysis

  • Main Integration Steps:
    1. Frontend sends the browser-produced SD-JWT+KB to a backend verification endpoint.
    2. Backend separates the SD-JWT and KB: verify the SD-JWT issuer signature (using the issuer JWKS) and the KB signature and that the KB contains the hash of the SD-JWT.
    3. Perform DNS lookup for the email domain’s _email-verification TXT to confirm delegation to that issuer.
    4. Bind the verified email to session/nonces and store it as needed with limited lifetime.
  • Learning Curve: Medium-low. JWT libraries handle most crypto, but you need to understand SD-JWT structure, KB hash checks, and DNS delegation parsing.

Practical Recommendations

  1. Always verify server-side: SD-JWT signature, KB signature, hash consistency, DNS delegation, and issuer metadata.
  2. Use short TTLs for tokens and record issuance times to prevent long-term trust.
  3. Implement thorough logging and error paths to detect hash/signature mismatches.
  4. Maintain fallback (traditional email verification) for unsupported browsers or non-delegated domains.

Caveats

Common pitfalls: mismatched hash/signature conventions, misconfigured DNS TXT records, and browser cookie/CORS issues preventing issuer token retrieval.

Summary: Integration effort is moderate; success depends on rigorous server-side validation and robust operational handling of DNS/JWKS/lifecycles rather than novel cryptography.

86.0%
In which scenarios is this protocol most suitable? What are clear limitations or scenarios where it is not appropriate?

Core Analysis

Core Question: Assess the protocol’s best-fit scenarios and its limits to decide when to adopt it or fallback to traditional methods.

Technical Analysis

  • Best-fit Scenarios:
  • Services that control the domain or can collaborate with domain owners (e.g., enterprise or platform-owned domains).
  • Registration/reset/communication flows where in-page, low-friction verification increases completion rates—especially in mobile and SPA contexts.
  • Use cases that prioritize privacy and reducing issuer visibility into which RPs are requesting verification.
  • Limitations / Not Suitable For:
  • Wide user bases with many third-party email domains where domains cannot/are unwilling to delegate.
  • Environments with browsers that do not support the protocol—no seamless experience.
  • Scenarios requiring long-term historical proof of email ownership without additional lifecycle/revocation mechanisms.
  • Comparison to Alternatives:
  • Traditional email verification: best compatibility, but higher friction and privacy exposure.
  • Social login: yields verified email but requires third-party relationships and may return extra profile data.

Practical Recommendations

  1. Prefer this protocol in controlled-domain deployments and where target users use supporting browsers.
  2. Always maintain fallback (email code/link, social login) for non-delegated domains or unsupported browsers.
  3. Implement revocation/periodic re-verification for long-lived assurance needs.

Caveats

Don’t expect this to fully replace classic methods; its strength is in low-friction, privacy-preserving verification within controlled environments.

Summary: Highest value in controlled domains with supported browsers; combine with fallbacks for broad compatibility and lifecycle coverage.

86.0%

✨ Highlights

  • Privacy-preserving browser-mediated email verification
  • Uses SD-JWT+KB for token key-binding and verification
  • Requires broad browser and issuer adoption to be useful
  • No releases and minimal contributor activity in repository

🔧 Engineering

  • In-page verification flow without email delivery, reducing drop-off and enhancing privacy
  • Uses DNS delegation and .well-known metadata to bind issuer by domain

⚠️ Risks

  • Requires browsers to implement new APIs and issuers to configure DNS delegation, raising deployment barriers
  • Repository lacks active community, explicit license and releases, which limits production adoption
  • Security and privacy depend on implementations (key management, replay protection, leakage mitigation)

👥 For who?

  • Browser vendors and privacy-focused identity/verification service providers
  • Web developers and product teams aiming to reduce signup friction and improve email verification UX