You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium(Java)测试:通过Windows Hello实现WebAuthn认证

Selenium模拟Windows Hello PIN码WebAuthn登录解决方案

可以通过Selenium的虚拟认证器模拟Windows Hello PIN码的WebAuthn登录,你的现有配置存在几个关键问题,调整后即可正常工作:

问题分析

你的配置中setIsUserVerified(true)会直接标记用户已完成验证,跳过了服务端预期的PIN验证触发流程——多数支持Windows Hello的Web服务会要求认证器触发用户验证交互,而非直接返回已验证状态。

正确配置步骤

  1. 确保驱动支持:使用ChromeDriver、EdgeDriver(推荐,对Windows Hello兼容性更好)或Firefox 109+版本的驱动,这些都支持虚拟认证器功能。
  2. 调整虚拟认证器选项:
    • 保留Transport.INTERNAL和Protocol.CTAP2(Windows Hello基于CTAP2协议,属于内部设备)
    • 保留setHasUserVerification(true)(标识认证器支持PIN验证)
    • 移除setIsUserVerified(true):让认证器触发服务端预期的用户验证流程
    • 可选添加setUserVerificationRequired(true):如果服务端强制要求用户验证

修正后的代码示例:

VirtualAuthenticatorOptions options = new VirtualAuthenticatorOptions();
options.setTransport(Transport.INTERNAL)
        .setProtocol(Protocol.CTAP2)
        .setHasUserVerification(true)
        .setUserVerificationRequired(true); // 按需添加,适配服务端要求
return ((HasVirtualAuthenticator) driver).addVirtualAuthenticator(options);

额外注意事项

  • 凭证准备:如果测试登录流程,需确保虚拟认证器中存在对应注册的凭证。可以通过addCredential方法提前注入凭证,或先执行注册流程测试并保存凭证后复用。
  • 模拟验证通过:当服务端触发PIN验证弹窗时,可通过如下代码模拟用户输入PIN并通过验证:
    VirtualAuthenticator authenticator = ((HasVirtualAuthenticator) driver).getVirtualAuthenticator();
    authenticator.setUserVerified(true);
    

内容的提问来源于stack exchange,提问作者PatrickBateman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:55:07