
webauthn (web authentication api) 旨在提供一种安全、去密码化的认证方式。在进行凭证创建(注册)或凭证断言(登录)时,开发者可以通过publickeycredentialcreationoptions或publickeycredentialrequestoptions对象来配置各种参数,其中timeout是一个关键选项。
timeout参数以毫秒为单位,指定了用户完成认证操作(例如指纹识别、面部识别或PIN输入)所需的最长时间。如果用户未能在指定时间内完成操作,WebAuthn请求通常会失败并抛出AbortError或TimeoutError,从而中断认证流程。这对于控制用户体验和防止长时间挂起的请求至关重要。
以下是一个典型的publicKey配置对象,其中包含timeout参数的示例:
const publicKey = {
"challenge": "testchanllengevalue",
"rp": { "name": "test.com" },
"user": {
"id": "12345-543212-12345-54321",
"name": "NAME",
"displayName": "NAME"
},
"attestation": "direct",
"timeout": 20000, // 期望的超时时间,单位毫秒
"authenticatorSelection": {
"authenticatorAttachment": "platform",
"requireResidentKey": false,
"userVerification": "required"
},
"pubKeyCredParams": [
{ "type": "public-key", "alg": -7 },
{ "type": "public-key", "alg": -257 }
]
};
// 调用 navigator.credentials.create 或 navigator.credentials.get
navigator.credentials.create({ 'publicKey': publicKey })
.then(credential => {
// 处理成功创建的凭证
})
.catch(error => {
// 处理错误,包括超时错误
if (error.name === 'TimeoutError') {
console.log('WebAuthn operation timed out.');
} else {
console.error('WebAuthn operation failed:', error);
}
});在桌面浏览器环境中,这个timeout参数通常能如预期般工作,当用户未能在规定时间内完成身份验证时,请求会被中止。
然而,在某些移动设备上,timeout参数的行为可能与桌面环境有所不同,甚至完全失效。具体而言,对于运行Android 14之前的安卓设备,WebAuthn操作的底层实现依赖于Google Play Services。当时,Google Play Services并未完全支持WebAuthn规范中定义的timeout机制。这意味着,即使在publicKey对象中设置了timeout值,用户在进行指纹或面部识别等操作时,请求也不会在指定时间后自动中断,而是会持续等待用户输入,直到用户完成操作或手动取消。
这种平台层面的限制导致了在旧版安卓设备上,WebAuthn的超时设置无法生效,从而影响了预期的用户体验和应用程序的逻辑。随着安卓系统的更新和WebAuthn标准的演进,Google Play Services对WebAuthn的支持也在不断完善,理论上后续版本会逐渐解决此类问题。开发者在设计WebAuthn流程时,需要考虑到这种平台差异性,尤其是在面向广泛安卓用户群体的应用中。
除了平台兼容性问题,timeout值的设定本身也需要遵循最佳实践。在上述示例中,timeout被设置为20000毫秒(20秒),这在实际生产环境中可能过短。WebAuthn规范推荐的timeout值应至少为五分钟(300000毫秒)。
为什么推荐更长的超时时间?
因此,建议开发者根据实际应用场景和用户预期行为,将timeout值设定为一个合理且足够长的持续时间,例如:
const publicKey = {
// ... 其他参数
"timeout": 300000, // 推荐值:5分钟 (300000毫秒)
// ... 其他参数
};WebAuthn的timeout参数是控制认证流程响应时间的重要机制。虽然在桌面环境中通常工作良好,但在Android 14之前的移动设备上,由于Google Play Services的底层限制,该参数可能无法生效。开发者在实现WebAuthn时,应:
通过充分理解这些行为差异和最佳实践,开发者可以构建更健壮、更用户友好的WebAuthn认证系统。
以上就是WebAuthn超时机制在移动设备上的行为差异与最佳实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号