MDN Web API 教程:深入理解 Credential Management API
2025-07-06 08:21:46作者:薛曦旖Francesca
什么是 Credential Management API
Credential Management API 是现代 Web 平台提供的一组接口,允许网站创建、存储和检索用户凭证(credentials)。凭证是用户身份验证的关键元素,它作为用户向网站证明自己身份的证据。
为什么需要这个 API
在传统 Web 开发中,处理用户登录和凭证管理往往需要开发者自行实现复杂的逻辑。Credential Management API 的出现解决了几个核心问题:
- 简化登录流程:自动填充凭证,减少用户输入
- 安全存储:浏览器提供安全的凭证存储机制
- 跨设备同步:凭证可以安全地同步到用户的其他设备
- 支持多种凭证类型:不仅限于用户名密码,还支持更现代的验证方式
核心概念解析
凭证类型
Credential Management API 支持四种主要凭证类型:
- 密码凭证 (PasswordCredential):传统的用户名/密码组合
- 联合身份凭证 (FederatedCredential):使用第三方身份提供商(如 Google、Facebook)的登录凭证
- 一次性密码凭证 (OTPCredential):用于短信验证码等场景
- 公钥凭证 (PublicKeyCredential):基于 Web Authentication API 的无密码认证
主要接口
- CredentialsContainer:通过
navigator.credentials
访问,提供核心功能 - Credential:所有凭证类型的基类
- PasswordCredential:表示用户名/密码凭证
- FederatedCredential:表示联合身份凭证
如何使用 Credential Management API
基本使用流程
- 获取凭证:当用户访问需要认证的页面时
- 存储凭证:用户成功登录后
- 管理凭证:允许用户查看和管理已保存的凭证
代码示例
存储密码凭证
// 用户登录成功后
const cred = new PasswordCredential({
id: 'user123',
password: 'securepassword123',
name: '张三'
});
navigator.credentials.store(cred)
.then(() => console.log('凭证已存储'))
.catch(err => console.error('存储失败:', err));
检索凭证
navigator.credentials.get({
password: true,
federated: {
providers: ['https://accounts.google.com']
}
}).then(cred => {
if (cred) {
// 使用凭证自动登录
console.log('自动登录用户:', cred.id);
} else {
// 没有存储的凭证,显示登录表单
showLoginForm();
}
});
安全注意事项
使用 Credential Management API 时,必须注意以下安全实践:
- 始终使用 HTTPS:凭证信息必须通过安全连接传输
- 遵循同源策略:凭证只能由创建它们的网站访问
- 用户控制:必须尊重用户的隐私选择
- 避免敏感信息:不要在凭证中包含不必要的个人信息
浏览器兼容性
Credential Management API 在现代浏览器中得到良好支持,包括 Chrome、Firefox、Edge 等。对于不支持的浏览器,应该提供回退方案。
实际应用场景
- 单点登录系统:跨多个相关网站共享登录状态
- 密码管理器集成:与浏览器内置密码管理器协同工作
- 渐进式增强:在不破坏传统登录流程的基础上增强用户体验
- 无密码认证:与 WebAuthn 结合实现更安全的认证方式
最佳实践
- 明确用户意图:只在用户明确执行登录操作时请求凭证
- 提供退出选项:允许用户清除存储的凭证
- 优雅降级:确保在不支持 API 的浏览器中仍能正常工作
- 定期更新:及时更新凭证信息以反映用户变更
总结
Credential Management API 为 Web 开发者提供了一套标准化、安全的凭证管理解决方案。通过合理使用这个 API,可以显著提升用户的登录体验,同时保持高水平的安全性。随着 Web 认证技术的不断发展,这个 API 将继续演进,支持更多现代化的认证方式。
对于开发者来说,理解并正确实现这个 API 是构建现代、用户友好的 Web 应用的重要一步。