首页
/ MDN Web API 教程:深入理解 Credential Management API

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 的出现解决了几个核心问题:

  1. 简化登录流程:自动填充凭证,减少用户输入
  2. 安全存储:浏览器提供安全的凭证存储机制
  3. 跨设备同步:凭证可以安全地同步到用户的其他设备
  4. 支持多种凭证类型:不仅限于用户名密码,还支持更现代的验证方式

核心概念解析

凭证类型

Credential Management API 支持四种主要凭证类型:

  1. 密码凭证 (PasswordCredential):传统的用户名/密码组合
  2. 联合身份凭证 (FederatedCredential):使用第三方身份提供商(如 Google、Facebook)的登录凭证
  3. 一次性密码凭证 (OTPCredential):用于短信验证码等场景
  4. 公钥凭证 (PublicKeyCredential):基于 Web Authentication API 的无密码认证

主要接口

  • CredentialsContainer:通过 navigator.credentials 访问,提供核心功能
  • Credential:所有凭证类型的基类
  • PasswordCredential:表示用户名/密码凭证
  • FederatedCredential:表示联合身份凭证

如何使用 Credential Management API

基本使用流程

  1. 获取凭证:当用户访问需要认证的页面时
  2. 存储凭证:用户成功登录后
  3. 管理凭证:允许用户查看和管理已保存的凭证

代码示例

存储密码凭证

// 用户登录成功后
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 时,必须注意以下安全实践:

  1. 始终使用 HTTPS:凭证信息必须通过安全连接传输
  2. 遵循同源策略:凭证只能由创建它们的网站访问
  3. 用户控制:必须尊重用户的隐私选择
  4. 避免敏感信息:不要在凭证中包含不必要的个人信息

浏览器兼容性

Credential Management API 在现代浏览器中得到良好支持,包括 Chrome、Firefox、Edge 等。对于不支持的浏览器,应该提供回退方案。

实际应用场景

  1. 单点登录系统:跨多个相关网站共享登录状态
  2. 密码管理器集成:与浏览器内置密码管理器协同工作
  3. 渐进式增强:在不破坏传统登录流程的基础上增强用户体验
  4. 无密码认证:与 WebAuthn 结合实现更安全的认证方式

最佳实践

  1. 明确用户意图:只在用户明确执行登录操作时请求凭证
  2. 提供退出选项:允许用户清除存储的凭证
  3. 优雅降级:确保在不支持 API 的浏览器中仍能正常工作
  4. 定期更新:及时更新凭证信息以反映用户变更

总结

Credential Management API 为 Web 开发者提供了一套标准化、安全的凭证管理解决方案。通过合理使用这个 API,可以显著提升用户的登录体验,同时保持高水平的安全性。随着 Web 认证技术的不断发展,这个 API 将继续演进,支持更多现代化的认证方式。

对于开发者来说,理解并正确实现这个 API 是构建现代、用户友好的 Web 应用的重要一步。