返回知识中心
身份

Credential Management API:设计可靠的浏览器登录流程

了解 Credential Management API 如何参与登录、如何保留用户选择,以及为什么服务器验证不可省略。

文档中心

想直接进入 身份 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

从用户选择、浏览器中介到服务器验证和可访问回退的凭据登录流程。

Credential Management API 为网站提供由浏览器中介的凭据请求、保存和读取方式。它不会把浏览器变成身份提供方,也不会自行创建 session。可靠的登录流程应把用户意图、浏览器中介、服务器验证和失败时的清晰回退放在同一合约中。

W3C Credential Management Level 1 文档目前是 Working Draft,而不是 W3C 的最终 Recommendation。它描述凭据容器和中介模型,但不能视为最终的跨浏览器兼容保证。MDN 的 Credential Management API 参考说明浏览器接口及兼容性。两者共同区分 API 能力、用户授权的操作和已认证的应用 session。

先定义登录合约

调用 navigator.credentials 之前,先说明用户要完成的事情。可能是继续保存的任务、创建账户或确认敏感操作。答案决定显示哪种凭据、需要什么同意文字,以及取消后要保留什么。

把凭据容器视为浏览器边界,而不是账户数据库。浏览器和用户允许时,API 可以交给依赖方一个对象;账户策略、session、授权和恢复仍由应用负责。

为状态分别命名:空闲、记录意图、请求中介、用户取消、收到凭据、等待验证、建立 session 和可用恢复。这样界面不会在服务器仍处理时就宣布登录成功。

明确的选择有助于隐私和无障碍。提供带标签的登录控件,说明尝试建立哪种账户关系,并提示浏览器可能打开原生提示。页面加载时不要自动启动凭据操作。

账户关联需要更严格的合约。凭据结果不能静默替换或合并已有 session。先询问是登录当前账户、关联凭据还是切换账户,并在等待期间保留未保存工作。

理解浏览器中介

API 把凭据类型和中介行为分开。实现可以包括密码、联邦或其他类型;可用性取决于浏览器、提供方、策略和当前上下文。

中介表示需要多少用户交互。静默或条件路径可能适合回访用户,必需路径则明确要求动作。没有返回凭据不能证明用户没有账户、凭据或兴趣。

调用可能在联系提供方之前失败。上下文可能不安全、接口缺失或策略阻止操作。兼容性分支可以展示其他方法,但不能制造凭据或放宽浏览器安全边界。

浏览器提示是用户旅程的一部分。先说明动作,保持焦点可预测并提供取消。拒绝是正常选择;应返回登录选项而不是自动重复提示。

凭据对象可能含敏感材料。不要把它放进 URL、分析标签、截图、异常文本或工单。只通过应用既有安全通道发送所需字段,日志只记录脱敏阶段和结果。

WebAuthn 隐私指南说明浏览器能力不是凭据或身份的证明;这里也应使用同样的限制。

让服务器负责验证

服务器是账户和 session 的权威。它应按凭据类型和提供方合约验证交换,绑定依赖方和动作,拒绝过期或重放值。客户端回调不能替代这些检查。

每次请求都绑定应用控制的短期 state。返回时检查类型、适用时的 audience 和待执行动作。只有集成协议要求时,才验证 nonce 或签名。密码路径和浏览器凭据路径应使用同一 session 政策。

建立 session 与保存凭据是不同决定。一次交换可能登录、注册、关联或只返回已验证资料。要向用户说明实际结果,并提供真正结束依赖方 session 的退出操作。此操作本身不会退出上游提供方,也不会删除浏览器保存的凭据。

错误信息应有帮助但不能泄露账户存在性。对无效、过期或未知凭据使用一致文字,并只保留区分浏览器、取消、提供方、服务器和超时所需的脱敏阶段。

恢复属于应用责任。只有产品已批准时才提供重置、支持验证或第一方路径。不要要求上传浏览历史或完整 profile。恢复引用应短期有效并在使用后失效。

存储分区指南说明嵌入或新的顶层上下文可能看到不同状态。把它当作上下文结果,并为需要的状态提供清楚的第一方 handoff。

设计回退和可访问反馈

健壮流程有一个浏览器中介选项和至少一个易懂替代方案,例如密码、提供方第一方页面、邮件链接或获批恢复。回退不是绕过策略,而是不支持、拒绝或过期时的正常路径。

跨分支保留用户工作。提示关闭时回到已知页面并保留非敏感字段;超时要说明结果未知并生成新 state;验证失败不能显示成功或建立部分 session。

可访问状态是正确性的一部分。宣布即将打开提示、用户取消或需要其他动作,把键盘焦点移到下一步说明,并为禁用控件给出原因。测试缩放、高对比度、读屏和长账户名。

本地化必须保持安全含义。翻译提供方、账户目的、取消、过期和恢复,但不要改变 session 是否建立。API 名称保留官方写法,周围说明使用目标语言。

用小型验收表测试。以合成账户覆盖批准、拒绝、取消、API 缺失、提供方不可用、state 过期、服务器无效响应、账户冲突、退出和恢复。记录可见消息、session 结果、保留工作和脱敏阶段。

不要用 API 做账户探测。没有凭据、方法被阻止和用户拒绝可能都没有结果,但含义不同。登录非必需时保留公开内容;必需时说明原因并提供获批恢复。

检查隐私和产品边界

最小化凭据数据。只收集交换所需字段,限制保留并控制支持访问。事件可记录阶段、版本、浏览器族、提供方类别和可见结果,不要保存对象本身。

不要把凭据可用性当作指纹。策略、profile、提供方和更新都会改变结果;它不能证明身份、设备、位置或账户,也不应成为持久标签。

检查 origin 和上下文边界。只在约定 origin 调用 API;需要 handoff 时使用服务器授权引用,绝不要把凭据暴露在查询字符串里,并解释组件、第一方 session 和提供方的关系。

把变化当作用户可见合约来测试。浏览器、提供方、关联代码、同意文字或存储变化后,重复合成旅程并比较提示、选择、验证、session、回退和删除。

测试夹具要分开浏览器状态和账户状态。干净 profile 表示首次使用,回访 profile 表示保存选择。按用途标记并在测试窗口结束时删除夹具。

为每个转换指定负责人。界面负责焦点和文字,浏览器负责中介,提供方负责账户,服务器负责验证、session 和撤销。结果不清楚时报告阶段和负责人,不要无限重试。

把中断当作正常情况。用户可关闭提示、断网、刷新或在 state 过期后回来。每条分支都应有一条消息和一个有界动作;重试生成新 state,不能重放凭据对象。

用支持团队能理解的语言记录合约。区分浏览器凭据、提供方账户、依赖方 session 和恢复引用,只索取最小脱敏标识,绝不要求密码、完整对象或完整 profile。

相同边界也适用于浏览器比较。保持版本、提供方、合成账户和动作不变,只记录可见分支与服务器结果。差异是需要解释的兼容性观察,不是对使用者的结论。

发布说明要精确。写明受影响的登录分支、支持的浏览器范围和可用回退,并说明现有 session 是否仍有效。不要保证提示必然出现或保存的凭据必然提供,因为这些取决于提供方、策略、profile 和用户动作。

生命周期责任应清楚可见。界面记录意图并保留任务,浏览器处理中介,提供方管理账户,服务器验证并撤销应用 session。handoff 只携带短期阶段和过期时间,不能携带完整凭据对象。

隐私审查也要覆盖失败路径。提示取消、API 不可用和服务器响应无效可能到达同一页面,但支持动作不同。消息要足以选择下一步,telemetry 要保持最小,并在每个否定案例后删除临时状态。

BotBrowser 支持在兼容的主机操作系统之间携带可重复的浏览器 profile,帮助团队用一致输入复核自己的登录流程。它不控制 Credential Management API 中介,不批准提供方凭据,也不能替代依赖方服务器验证和 session 策略。

公开来源

W3C Credential Management Level 1 文档目前是 Working Draft,而不是最终 Recommendation。它描述容器和中介,但不保证最终的跨浏览器兼容性。MDN 参考提供 API 和兼容性概览。BotBrowser 跨平台 profile 文档只支持可重复复核这一产品能力;实际可用性仍需按浏览器、提供方和服务器合约测试。

#凭据管理#登录#浏览器 API#身份#隐私

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。