如果您只对测试服务器端感兴趣,您可以编写一个带有按钮的简单网页,这些按钮可以锻炼您的端点并调用navigator.credentials.(create|get)
. 然后,您可以使用Selenium 4+ 检测浏览器,设置Virtual Authenticators并针对该网页运行测试。以selenium 测试为例。设置身份验证器的代码在 java 中如下所示:
VirtualAuthenticatorOptions options = new VirtualAuthenticatorOptions();
options.setTransport(Transport.INTERNAL)
.hasUserVerification(true)
.isUserVerified(true);
VirtualAuthenticator authenticator =
((HasVirtualAuthenticator) driver).addVirtualAuthenticator(options);
请注意使用正确的设置设置身份验证器以匹配您的 webauthn 调用。您应该选择正确的用户验证支持、常驻密钥支持以及内部(即平台)与 usb / nfc / ble(即跨平台)传输。
如果您使用的是旧版本的 selenium,则必须自己手动定义命令。代码应该看起来像
browser.driver.getExecutor().defineCommand(
"AddVirtualAuthenticator", "POST", "/session/:sessionId/webauthn/authenticator");
// ...
Command addVirtualAuthCommand = new Command("AddVirtualAuthenticator");
addVirtualAuthCommand.setParameter("protocol", "ctap2");
addVirtualAuthCommand.setParameter("transport", "usb");
browser.driver.getExecutor().execute(addVirtualAuthCommand);
如果您还没有将它用于集成测试,那么运行 selenium 测试可能需要一些工作。然而,这个实现将非常接近现实。从浏览器的角度来看,虚拟身份验证器是真实的硬件。来自身份验证器的响应将由浏览器处理,就好像它是真实的一样。
目前,只有基于 chromium 的浏览器支持虚拟身份验证器。