0

通过 webauthn 注册后,我们会收到一个凭证 ID,用于与该用户关联(以及后端的其他信息,如公钥等)。在登录期间,我们创建了传递给 navigator.credentials.get 的 publicKeyCredentialRequestOptions,我们传递了凭证 ID。

我的问题是,当我们调用 navigator.credentials.create 时,在 publicKeyCredentialCreationOptions(包含 id、name、displayName)中传递“user”键的价值是什么?我(认为)用户信息可能会作为断言响应的一部分返回(在 userHandle 字段中),但不确定添加的值如何(因为我们可能已经在后端拥有该信息)。

4

1 回答 1

0

首先,信息可以由浏览器/操作系统 UI 呈现。例如,在 Windows 10 上,显示的对话框显示“设置您的安全密钥以以 {username} 身份登录 {hostname}”

然而,真正的价值是当您请求常驻密钥时(通过authenticatorSelection.requireResidentKey)。这意味着帐户信息(与来源相关)存储在身份验证器本身上。这允许无用户名登录,因为身份验证器本身具有给定站点的帐户信息。然后通过浏览器/操作系统 UI 处理帐户选择,而服务器不必透露有关用户的任何信息。要实现这一点,您所要做的就是保持allowCredentials未定义。

于 2020-07-01T13:11:14.453 回答