努力让 Playwright 使用 Azure Active Directory 条件访问

Posted

技术标签:

【中文标题】努力让 Playwright 使用 Azure Active Directory 条件访问【英文标题】:Struggling to get Playwright to work with Azure Active Directory Conditional Access 【发布时间】:2022-01-18 18:20:29 【问题描述】:

我正在围绕我们的前端 php 应用程序建立一个 Playwright 测试框架,以便为我们的团队建立自动化测试原型。我们的身份验证由具有 2FA 的 Azure Active Directory 以及我们设备的条件访问进行管理。我遇到的问题是条件访问不喜欢 Playwright 使用的伪隐身 Chromium 浏览器。以下是我在 Edge InPrivate 窗口中尝试登录时收到的消息(与 Chromium 相同的错误消息):

我已经浏览了 Playwright 文档中的身份验证部分并进行了搜索,但我没有通过条件访问问题获得任何运气。我目前正在运行的失败的 TypeScript 代码是:

import test from "@playwright/test";
const  chromium  = require('playwright');

test('Log into Application', async () => 
    const userDataDir = '\UserData';
    const context = await chromium.launchPersistentContext(userDataDir,  headless: false );

    const page = await context.newPage();
    await page.goto('https://MyApplication.com');
    await page.pause();
)

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:
    根据Grant controls | Microsoft Docs 中的最后一个项目符号点。

条件访问不能将 InPrivate 模式下的 Microsoft Edge 视为 合规设备或经批准的客户端应用程序。

    在普通 chromium 浏览器(非私有模式)下工作,您需要根据您的操作系统安装并运行支持的浏览器。如果您使用的是 Windows 10,则支持的浏览器包括 Microsoft Edge、Internet Explorer 和 Google Chrome。如果您使用的是不同的操作系统,您可以查看supported browsers. 的完整列表

(或)

    此错误消息可能是因为出于安全原因,全局管理员在您公司的 Office 365 租户中创建了条件访问策略,因此只有在 Azure 中注册的特定设备才允许您使用。因此,在这种情况下,您应该与公司的“IT HelpDesk”部门联系,并要求他们配置并允许那里的所有浏览器。

管理员可以使用访问控制来授予或阻止对资源的访问:Grant controls

您可能需要联系管理员从 Office 365 管理中心提出支持票以进行进一步调查

参考:Troubleshooting compliance error

如果您拥有全局管理员权限,您可以排除意外故障 使用错误消息与条件访问相关的登录结果 和 Azure AD 登录日志。

您可以点击更多详细信息并查看信息。

以全局管理员、安全管理员或全局读者身份登录 Azure 门户

浏览到 Azure Active Directory > 登录。

查找要登录的活动以进行审核。添加或删除过滤器。

条件访问选项卡将显示导致登录中断的一个或多个特定策略。

您可以查看和检查基本信息、是否注册的设备详细信息以及其他不符合政策的详细信息。

有关故障排除的完整详细信息。请查看此Troubleshooting | Microsoft Docs 了解故障排除的完整详细信息。

参考:

You Can’t Get There From Here – Vince's Server Stuff (vincecarbone.com)

【讨论】:

以上是关于努力让 Playwright 使用 Azure Active Directory 条件访问的主要内容,如果未能解决你的问题,请参考以下文章

Hello Playwright:等待页面加载

Playwright快速上手指南

如何使用 Playwright 关闭弹出消息框?

python+playwright 学习-8.如何在控制台调试定位(Inspect selectors)

Hello Playwright:与元素交互

python+playwright 学习-37.如何在已经打开的浏览器上继续操作,绕过登录验证码