gpt4 book ai didi

java - 集成测试WebAuthN作为2FA选项

转载 作者:行者123 更新时间:2023-12-03 10:04:45 28 4
gpt4 key购买 nike

我想将WebAuthN作为多因素身份验证的选项添加到Angular&Spring应用程序中。我使用了Yubico的WebAuthN java-webauthn-server库。

在没有硬件客户端的情况下,集成测试WebAuthN服务器的最佳方法是什么?是否有可以在自动测试中处理密码的软件?我想在CI/CD管道(GitLab)中自动运行这些测试。

在最佳情况下,我希望能够测试整个过程,创建凭据并登录。另一种情况是,我在后端使用已知凭据,仅使用这些凭据登录。

我的API基于REST/JSON,具有依赖方,用户,质询,pubKey等。

我的集成测试基于Java(Spring Boot Starter测试)

我主要对如何在没有客户端的情况下对服务器进行集成测试感兴趣。是否存在可以处理身份 validator 并返回正确的数据/json对象的实用程序或库?

我看过Testing WebAuthn via REST tool,但是,我对测试规范不感兴趣,因为我正在使用一个库,所以我只想确保将库正确地应用于我的代码。

最佳答案

如果仅对测试服务器端感兴趣,则可以编写一个简单的网页,其中包含用于执行端点并调用navigator.credentials.(create|get)的按钮。然后,您可以使用Selenium 4+来检测浏览器,设置Virtual Authenticators并对该网页进行测试。以selenium tests为例。设置身份 validator 的代码在Java中如下所示:

    VirtualAuthenticatorOptions options = new VirtualAuthenticatorOptions();
options.setTransport(Transport.INTERNAL)
.hasUserVerification(true)
.isUserVerified(true);
VirtualAuthenticator authenticator =
((HasVirtualAuthenticator) driver).addVirtualAuthenticator(options);
请注意使用正确的设置来设置身份 validator ,以匹配您的webauthn调用。您应该选择正确的用户验证支持,驻留 key 支持以及内部(即平台)与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 测试可能会花费一些工作。但是,此实现将非常符合实际情况。从浏览器的角度来看,虚拟身份 validator 是真正的硬件。来自身份 validator 的响应将由浏览器进行处理,就像它是真实的一样。
目前,仅基于 Chrome 的浏览器支持虚拟身份 validator 。

关于java - 集成测试WebAuthN作为2FA选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61814334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com