苹果设备Safari清除缓存后Passkey重复创建及登录问题咨询
Safari清除缓存后重复创建Passkey的问题解答
是否正常?
这种情况是完全正常的,符合WebAuthn标准和苹果Passkey的设计逻辑。
原因解析
- Passkey不存储于Safari缓存:Passkey保存在苹果设备的iCloud钥匙串(未开启同步则存在本地钥匙串)中,和Safari的普通缓存属于完全独立的存储区域,清除缓存不会删除已创建的Passkey。
- 浏览器本地关联状态丢失:清除缓存后,浏览器丢失了与服务端关联的会话信息、已注册Passkey的本地绑定记录。此时调用
navigator.credentials.create()时,客户端无法识别当前服务端(RP ID)下已有可用Passkey,再加上服务端可能因为会话丢失未验证出用户已注册身份,就会触发新的Passkey创建流程。 - Passkey唯一性判定规则:Passkey的唯一性由服务端依赖方ID(RP ID)、用户ID、凭证类型共同决定。如果服务端在用户清除缓存后未正确识别其身份状态,就会允许创建新的凭证,最终导致同一用户同一服务端下存在多个Passkey。
清除缓存后的登录操作说明
清除Safari缓存后执行Passkey登录时:
- 浏览器仍可从钥匙串中检索到所有已创建的Passkey,你会看到对应服务端的多个Passkey选项。
- 选择任意一个Passkey都能完成登录,因为所有Passkey都绑定了同一用户身份和服务端ID,服务端会正常验证凭证合法性并通过。
- 若想避免生成多个Passkey,建议在调用
navigator.credentials.create()前,先调用navigator.credentials.get()检查是否已有可用凭证,或者确保服务端先完成用户身份验证,再发起Passkey创建请求。
内容的提问来源于stack exchange,提问作者Bartosz M.
相关产品推荐
相关产品推荐

