0

尝试为使用联合身份验证和 ADFS 的网站编写自动化测试。

在我的 Ci/CD 管道中,我不会在经过身份验证的 Windows 上下文中运行,因此我的 Playwright 测试将遇到 ADFS 凭据提示,但是在开发测试时,我们正在经过身份验证的上下文中工作,并且 Windows 直通身份验证将启动(NTLM是我的猜测)。

我怎样才能防止这种情况?

在我之前使用 NightwatchJS 编写的一组测试中,我使用的技巧是发送一个未在 ADFS 中注册为支持 NTLM 质询流的浏览器的自定义 UserAgent 字符串。(顺便说一句,它是 Opera Mini)

对于 Playwright,同样的把戏显然不起作用,我希望那里有更好的东西。

我尝试了什么:

context = await browser.newContext({
        userAgent: 'Opera/9.80 (Android; Opera Mini/12.0.1987/37.7327; U; pl) Presto/2.12.423 Version/12.16'
})
4

2 回答 2

1

所以.....经过更多的挖掘,在提出了正确的问题之后,最终是:

“如何在 Chrome 中禁用 Windows 集成身份验证?”

我在 SO 上找到了这个条件清单这个答案

修复方法是向 chromium 添加启动参数以禁用 WIA。下面是重要的一点:

browser = await chromium.launch({
            args: ['--auth-server-whitelist="_"'],
        });

这将使 chrome 显示凭据的基本身份验证提示。

但是,当我将其与 ADFS 服务器不支持的用户代理中的自定义 userAgent 字符串结合使用时,我设法到达了 ADFS 的登录页面。

OperaMini 再次为我工作:

context = await browser.newContext({
        userAgent: 'Opera/9.80 (Android; Opera Mini/12.0.1987/37.7327; U; pl) Presto/2.12.423 Version/12.16'
})
于 2020-11-04T07:47:52.777 回答
0

您需要向 Web 应用程序代理发送调用或设置一个内部代理。Wep 应用程序代理不支持 Windows 集成身份验证。

于 2020-11-03T17:40:14.890 回答