阻止在已存在通行密钥的情况下创建新通行密钥

要阻止在同一通行密钥提供程序中已存在通行密钥的情况下创建新通行密钥,请使用 WebAuthn 的 excludeCredentials 属性,此属性是 PublicKeyCredentialCreationOptions 字典的可选属性。

excludeCredentials 属性是给定用户已存在的公钥描述符数组。当 依赖方服务器想要阻止在单个身份验证器上为现有用户创建新凭据时,会提供此信息。

excludeCredentials 数组具有以下属性

  • type:一个字符串,描述要生成的公钥凭据类型。默认值为“public-key”。
  • id:一个 ArrayBuffer,与现有的公钥凭据标识符 (PublicKeyCredential.rawId) 匹配。此标识符在创建 PublicKeyCredential 实例期间生成。

如果用户尝试在已包含此参数中列出的凭据之一的平台身份验证器上创建新凭据,则 客户端将返回错误。如果身份验证器已包含此类型的公钥凭据,则身份验证器会照常收集用户同意,并向用户显示成功指示,但不会创建新凭据。将抛出 InvalidStateError 异常,指示用户已拥有与 excludeCredentials 匹配的有效凭据。

"excludeCredentials": [
    {"id": "<id-1>", "type": "public-key"},
    {"id": "<id-2>", "type": "public-key"}
  ]

此 JSON 可用于防止具有提供的凭据之一的身份验证器被多次注册。每个“<id-*>”值都应填充要排除的凭据的标识符。

W3C 建议中了解有关 excludeCredentials 的更多信息