我读了很多关于移动设备和自己的依赖方服务器之间的密钥实现的文章,但仍然有一些悬而未决的问题:
{ “rp”:{...}, “用户”:{ "id": "NWRjZTkzZjAtNmY2NC00MDdlLTllMjYtNDU4N2EwNGQzNTNj", “姓名”:“[email protected]”, “显示名称”:“[email protected]” }, 挑战: ”...”, pubKeyCredParams:[...] }
也没有找到任何有关name和displayName的信息,是否有可能更改\稍后更新它们?
服务器在注册过程中创建挑战后,是否不清楚我们要保存到数据库中的内容?看来我们应该保存用户实体和挑战字符串,但不保存挑战模型的其余部分 (json)。
当我们在注册期间请求挑战时(我将使用电子邮件作为用户),我们是否需要检查用户是否已经存在(我的猜测是 - 不,只是想仔细检查。因为我们不应该暴露给此信息发错人了)?
由于移动设备是可信来源,我们是否应该使用基本身份验证来请求挑战以及我们还有哪些其他选项?
似乎无法在 Android 上测试 Passkey,例如在本地完成。您是否需要部署一些依赖方服务器而不是“本地主机”?
基本上,用户 ID(也称为“用户句柄”)可能会在未经 USB 安全密钥进行用户验证的情况下暴露。这是一种匿名化的隐私措施(请参阅https://github.com/w3c/webauthn/issues/1763)
如果您使用相同的用户 ID 重新创建凭证,则应将其覆盖。这可用于更新名称/显示名称。
我发现这个问题不清楚。这可能会带来一些启发:https://passwordless.id/protocols/webauthn/2_registration
我再次发现这个问题不清楚。由您决定是否允许每个用户注册多个设备/凭据,还是仅注册一个设备/凭据,并依靠平台的同步功能来避免因设备丢失而导致的任何锁定。
挑战是随机数,以避免重放攻击。每次用户注册/登录时,情况总是不同的。它不是“受保护资源”。
不知道。