1. Browser validation
evil.com and pretend to be google.com.2. Signed origin data
clientDataJSON.https://example.com.3. Fresh challenge
What works in local development
| Origin | RP ID |
|---|---|
http://localhost:3000 | localhost |
http://localhost:8000 | localhost |
http://localhost | localhost |
rp: { id: "localhost", name: "My Dev App" }
Why this matters
localhost is treated as a secure context even without TLS.:3000 can work on :8000.