Credential Management API - 让网站可以存储和检索密码,公钥和联合凭据

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

Credential Management API(凭据管理 API)让网站可以存储和检索密码,公钥和联合凭据。这些功能使用户无需输入密码即可登录,查看他们用于登录站点的联合帐户,并在会话未过期时,不用显式登录即可恢复登录状态。

凭证管理的概念和用法

该 API 使网站可以直接与用户代理的密码系统进行交互,以便网站可以以统一的方式处理网站凭据,并且用户代理可以在其凭据管理方面提供更好的帮助。例如,用户代理在与联合身份提供者或深奥的登录机制打交道时特别困难。

为了解决这些问题,凭据管理 API 为网站提供了存储和检索不同类型凭据的方法。这为用户提供了一些功能,例如查看他们用于登录站点的联合帐户,或者在没有明确的过期会话登录流程的情况下恢复会话。

此 API 仅限于顶级上下文。在 <iframe> 元素中调用 get()store() 将不起作用。

子域共享凭据

规范的更高版本允许从其他子域中检索凭证。例如,可以使用存储在 login.example.com 中的密码登录到 www.example.com。为了利用这一点,必须通过调用 CredentialsContainer.store() 明确地存储密码。有时将其称为公共后缀列表(PSL)匹配。但是规范只建议使用 PSL 来确定一个凭证的有效范围。它并不要求它。因此,浏览器在实现上可能会有所不同。

接口

Credential

提供有关实体的信息,作为信任决策的先决条件。

CredentialsContainer

提供了请求凭据的方法,并在发生成功登录或注销等事件时通知用户代理。可以从 navigator.credentials 访问该接口。

FederatedCredential

提供有关来自联合身份提供者的凭据信息。联合身份提供者是网站信任以正确认证用户的实体,并且为此提供 API。 OpenID Connect 是联合身份提供者框架的示例。

PasswordCredential

提供有关用户名 / 密码对的信息。

PublicKeyCredential

提供使用基于非对称密码而非密码的更安全系统进行登录的凭据。

规范

规范 状态 备注
Credential Management Level 1 工作草案 Initial definition.
Web Authentication: An API for accessing Public Key Credentials Level 1 推荐 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持511860 不支持 支持13
id511860 不支持 支持13
name (from CredentialUserData mixin)51 — 521 未知 不支持 不支持 未知 未知
type511860 不支持 支持13

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持5151 未知 支持 未知 未知13.3
id5151 未知 支持 未知 未知13.3
name (from CredentialUserData mixin)51 — 52151 — 521 未知 不支持 未知 未知 未知
type5151 未知 支持 未知 未知13.3

1. 参阅 Bug 602980