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 | 推荐 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 51 | 18 | 60 | 不支持 | 支持 | 13 |
id | 51 | 18 | 60 | 不支持 | 支持 | 13 |
name (from CredentialUserData mixin) | 51 — 521 | 未知 | 不支持 | 不支持 | 未知 | 未知 |
type | 51 | 18 | 60 | 不支持 | 支持 | 13 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 51 | 51 | 未知 | 支持 | 未知 | 未知 | 13.3 |
id | 51 | 51 | 未知 | 支持 | 未知 | 未知 | 13.3 |
name (from CredentialUserData mixin) | 51 — 521 | 51 — 521 | 未知 | 不支持 | 未知 | 未知 | 未知 |
type | 51 | 51 | 未知 | 支持 | 未知 | 未知 | 13.3 |
1. 参阅 Bug 602980。