使用 Playwright 防止 SSO
Prevent SSO with Playwright
正在尝试为使用 ADFS 联合身份验证的网站编写自动化测试。
在我的 Ci/CD 管道中,我不会 运行 在经过身份验证的 Windows 上下文中,因此我的 Playwright 测试会遇到 ADFS 凭据提示,但是在开发我们正在工作的测试时在经过身份验证的上下文中,Windows 传递身份验证将启动(我猜是 NTLM)。
我该如何预防?
在我之前使用 NightwatchJS 编写的一组测试中,我使用的技巧是发送一个浏览器的自定义 UserAgent 字符串,该浏览器未在 ADFS 中注册为支持 NTLM 质询流的浏览器。 (顺便说一句,它是 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'
})
您需要将调用发送到 Web 应用程序代理或设置一个内部代理。 Wep 应用程序代理不支持 Windows 集成身份验证。
所以.....经过更多的挖掘,在提出正确的问题之后,最终是:
“如何在 Chrome 中禁用 Windows 集成身份验证?”
我找到了 this checklist for conditions and 。
解决方法是向 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'
})
正在尝试为使用 ADFS 联合身份验证的网站编写自动化测试。
在我的 Ci/CD 管道中,我不会 运行 在经过身份验证的 Windows 上下文中,因此我的 Playwright 测试会遇到 ADFS 凭据提示,但是在开发我们正在工作的测试时在经过身份验证的上下文中,Windows 传递身份验证将启动(我猜是 NTLM)。
我该如何预防?
在我之前使用 NightwatchJS 编写的一组测试中,我使用的技巧是发送一个浏览器的自定义 UserAgent 字符串,该浏览器未在 ADFS 中注册为支持 NTLM 质询流的浏览器。 (顺便说一句,它是 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'
})
您需要将调用发送到 Web 应用程序代理或设置一个内部代理。 Wep 应用程序代理不支持 Windows 集成身份验证。
所以.....经过更多的挖掘,在提出正确的问题之后,最终是:
“如何在 Chrome 中禁用 Windows 集成身份验证?”
我找到了 this checklist for conditions and
解决方法是向 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'
})