0

0

WebAuthn 在移动设备上请求超时失效问题解析与解决方案

DDD

DDD

发布时间:2025-09-03 21:35:01

|

319人浏览过

|

来源于php中文网

原创

webauthn 在移动设备上请求超时失效问题解析与解决方案

WebAuthn 是一种现代化的身份验证标准,它允许用户使用生物识别技术(如指纹、面部识别)或安全密钥进行身份验证。在使用 WebAuthn 时,开发者可以通过设置超时参数来限制身份验证请求的持续时间。然而,在某些情况下,尤其是在移动设备上,开发者可能会发现设置的超时参数并没有生效。

WebAuthn 超时参数的设置

WebAuthn 的 navigator.credentials.create() 方法接受一个包含 publicKey 属性的对象作为参数。publicKey 对象中可以包含一个 timeout 属性,用于指定身份验证请求的超时时间,单位为毫秒。

例如:

const publicKey = {
    "challenge": "testchanllengevalue",
    "rp": { "name": "test.com" },
    "user": {
      "id": "12345-543212-12345-12345",
      "name": "NAME",
      "displayName": "NAME"
    },
    "attestation": "direct",
    "timeout": 20000, // 20 秒超时
    "authenticatorSelection": {
      "authenticatorAttachment": "platform",
      "requireResidentKey": false,
      "userVerification": "required"
    },
    "pubKeyCredParams": [
      { "type": "public-key", "alg": -7 },
      { "type": "public-key", "alg": -257 }
    ]
}

navigator.credentials.create({ 'publicKey': publicKey })
    .then(credential => {
        // 身份验证成功
    })
    .catch(error => {
        // 身份验证失败
        console.error("WebAuthn 认证失败:", error);
    });

上述代码片段中,timeout 被设置为 20000 毫秒,即 20 秒。理论上,如果在 20 秒内用户没有完成身份验证,请求应该超时并返回错误。

奇布塔
奇布塔

基于AI生成技术的一站式有声绘本创作平台

下载

移动设备上的超时问题

然而,在移动设备上,尤其是 Android 设备上,情况可能会有所不同。在 Android 14 之前的版本中,WebAuthn 操作通常由 Play Services 处理。Play Services 在早期版本中不支持 WebAuthn 请求的超时功能。这意味着,即使设置了 timeout 参数,它也可能不会生效。

具体原因:

  • Android 版本限制: Android 14 之前的版本,依赖于 Google Play Services 来处理 WebAuthn 相关操作。
  • Play Services 支持: 早期版本的 Google Play Services 缺乏对 WebAuthn 超时功能的支持。

解决方案与建议

  1. 考虑 Android 版本: 考虑到 Android 版本的差异,开发者需要意识到在 Android 14 以下的版本中,timeout 参数可能不会生效。
  2. 服务端超时机制: 建议在服务端实现额外的超时机制。即使客户端的超时设置失效,服务端仍然可以在一定时间内拒绝未完成的身份验证请求。
  3. 超时时间设置: WebAuthn 规范建议超时时间应反映 RP (Relying Party) 愿意信任其他认证因素的时间,或者建立挑战有效性的时间。规范建议最小超时时间为五分钟。在实际应用中,开发者应根据具体的安全需求和用户体验来调整超时时间。
  4. 错误处理: 完善错误处理机制,捕获可能出现的超时错误,并向用户提供友好的提示。

注意事项

  • 超时时间单位: timeout 属性的单位是毫秒。
  • 规范建议: 遵循 WebAuthn 规范,合理设置超时时间。
  • 兼容性测试: 在不同的设备和浏览器上进行充分的兼容性测试,确保 WebAuthn 功能的稳定性和可靠性。

总结

虽然 WebAuthn 提供了 timeout 参数来控制身份验证请求的持续时间,但在移动设备上,由于 Android 版本的限制和 Play Services 的支持情况,超时设置可能不会生效。为了解决这个问题,开发者需要在服务端实现额外的超时机制,并合理设置超时时间,以确保安全性和用户体验。同时,进行充分的兼容性测试也是至关重要的。

相关专题

更多
android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

277

2023.08.14

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

1745

2023.08.22

android权限限制怎么解开
android权限限制怎么解开

android权限限制可以使用Root权限、第三方权限管理应用程序、ADB命令和Xposed框架解开。详细介绍:1、Root权限,通过获取Root权限,用户可以解锁所有权限,并对系统进行自定义和修改;2、第三方权限管理应用程序,用户可以轻松地控制和管理应用程序的权限;3、ADB命令,用户可以在设备上执行各种操作,包括解锁权限;4、Xposed框架,用户可以在不修改系统文件的情况下修改应用程序的行为和权限。

2020

2023.09.19

android重启应用的方法有哪些
android重启应用的方法有哪些

android重启应用有通过Intent、PendingIntent、系统服务、Runtime等方法。本专题为大家提供Android相关的文章、下载、课程内容,供大家免费下载体验。

270

2023.10.18

Android语音播放功能实现方法
Android语音播放功能实现方法

实现方法有使用MediaPlayer实现、使用SoundPool实现两种。可以根据具体的需求选择适合的方法进行实现。想了解更多语音播放的相关内容,可以阅读本专题下面的文章。

347

2024.03.01

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

8

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

18

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

18

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 13万人学习

Java 教程
Java 教程

共578课时 | 49.9万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号