上一章我们聊了单点登录(SSO)在前端的落地形态:从 Cookie 域共享到基于 OIDC + Refresh Token 的集中式认证,再到微前端下的同步挑战。但无论 Token 再怎么优化、SSO 再怎么无缝,密码 这个人类最古老的数字身份载体,始终是整个体系最脆弱的一环:易忘、易猜、易钓鱼、易泄露、易重用。
从 2020 年开始,行业集体意识到:最好的密码,就是没有密码 。这一篇,我们聚焦密码的"死亡过程"------从传统 MFA 的普及,到 TOTP/HOTP 的辅助,再到 WebAuthn/FIDO2 的崛起,最终到 2025--2026 年 Passkey(通行密钥)成为主流的无密码方案。前端工程师的角色,也从"表单 + 验证码校验"进化到"调用 navigator.credentials API + 处理跨设备同步"。
1. 2020--2022:MFA 成为标配,但密码仍是"根"
2020 年疫情加速数字化,远程办公 + 电商爆发,钓鱼攻击激增。密码 + 短信/邮箱 OTP 的组合被大规模强制。
典型前端实现(2020--2022):
- 登录页:用户名 + 密码 + "发送验证码"按钮
- 后端发短信/邮件 → 前端输入 6 位码
- 框架:React/Vue + axios 轮询 / 长连接 polling
但问题很快暴露:
- 短信劫持(SIM swapping)泛滥
- 钓鱼网站实时中转 OTP
- 用户疲劳 → 关闭 MFA 或用弱密码
统计:2021--2022 年,短信 OTP 仍是主流,但 FIDO Alliance 开始大力推 FIDO2(WebAuthn + CTAP)作为 phishing-resistant MFA。
前端接入 WebAuthn(早期):
js
// 注册(navigator.credentials.create)
async function register() {
const publicKey = await fetch('/webauthn/register/challenge').then(r => r.json());
const credential = await navigator.credentials.create({ publicKey });
await fetch('/webauthn/register', {
method: 'POST',
body: JSON.stringify(credential)
});
}
但 2020--2022 年,WebAuthn 普及慢:浏览器支持不全、用户教育成本高、设备兼容性差。
2. 2022--2024:Passkey 概念诞生 + 巨头推动(Apple/Google/Microsoft 三巨头联盟)
2022 年 5 月,Apple 在 WWDC 推出 iOS 16 的 Passkeys(基于 FIDO2 的同步凭证)。
核心卖点:
- 私钥存设备 Secure Enclave / TPM
- 公钥注册到服务端
- 跨设备同步(iCloud Keychain / Google Password Manager / Microsoft 的实现)
- 生物识别(指纹/面容)或 PIN 验证
- Phishing-resistant(origin binding)
2023 年 Google 跟进:Chrome + Android 全面支持 Passkey,默认推动。
2024 年 Microsoft:新账户默认无密码 + Passkey。
前端变化:
- 使用
@simplewebauthn/browser或原生navigator.credentials - 支持 autofill(浏览器自动提示 Passkey)
- 条件 UI(conditional mediation):
mediation: 'conditional'让 Passkey 像密码一样自动填充
典型注册/认证代码(2024 现代写法):
js
// 认证(登录)
async function authenticate() {
const options = await fetch('/webauthn/auth/options').then(r => r.json());
options.mediation = 'conditional'; // 自动提示
const assertion = await navigator.credentials.get({ publicKey: options });
const res = await fetch('/webauthn/auth', {
method: 'POST',
body: JSON.stringify(assertion)
});
if (res.ok) console.log('登录成功');
}
这一阶段,Passkey 从"实验"变成"可选默认"。
3. 2025--2026:Passkey 真正爆发 + 密码死亡的临界点(2026 年现状)
到 2026 年 2 月,数据已非常清晰:
- 设备就绪率:96% 的设备支持 Passkey(state-of-passkeys.io 数据,桌面 +68%、移动 +3% 增长)
- 用户拥有率:69% 用户至少有一个 Passkey(从 2023 年的 39% 认知率暴涨)
- 顶级网站支持率:48% 的前 100 网站支持 Passkey(2022 年仅 20% 多)
- 登录成功率:Passkey 93% vs 传统 63%
- 企业部署:87% 组织已部署或正在部署 Passkey(HID/FIDO 数据)
- 认证量:Dashlane 数据显示月认证量达 130 万(同比翻倍),Google 增长 352%、Roblox 856%
巨头强制默认:
- Google:2023 年起默认 Passkey
- Microsoft:2025 年 5 月新账户默认无密码
- Amazon、PayPal、TikTok 等电商/社交平台大规模跟进
前端接入难度(2026 年):
- 极低:成熟库(@simplewebauthn、@auth0/auth0-spa-js、Clerk、Supabase Auth)屏蔽细节
- 跨设备同步:依赖平台(iCloud/Google/MS),前端只需调用 API
- 回退机制:仍支持密码 + TOTP 作为备用(恢复码、邮箱魔法链接)
- 一键登录融合:Passkey + Apple/Google 一键 + 本机号码识别
典型组合拳(ToC 高频场景):
- 首选:Passkey(生物/设备验证)
- 备用:魔法链接(邮箱点击)
- 恢复:一次性恢复码 + 手机号验证
- 高危操作:Passkey + 二次确认(金额/敏感数据)
4. 前端工程师的实际落地 Checklist(2026 版)
- 使用
navigator.credentials+mediation: 'conditional'实现 autofill - 支持跨平台 RP ID(related-origin-requests for 多域)
- 处理 user verification:
userVerification: 'preferred' | 'required' - 兼容旧浏览器:polyfill 或 fallback 到 TOTP
- 测试场景:Incognito、无网络、设备切换
- 隐私考虑:不存储敏感 claims,前端只管传输 raw credential
小结 & 过渡
2020--2026 年,密码从"必须" → "可选" → "即将灭绝"的过程,核心驱动力是:
- 安全:phishing-resistant(FIDO2)
- 体验:生物识别 + 跨设备同步
- 经济:减少重置支持票(降 50--80%)
到 2026 年,Passkey 已不是"未来技术",而是消费者预期:用户开始问"为什么你们还不支持 Passkey?"
但密码完全死亡还需要时间:遗留系统、合规要求、低端设备、用户教育仍存阻力。