Запретить единый вход с 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'
})

person dutzu    schedule 27.10.2020    source источник
comment
Привет @dutzu! Вы пытаетесь ввести федеративные учетные данные с помощью автоматизации и избежать сквозной передачи?   -  person Nishant    schedule 02.11.2020
comment
да. Я хочу иметь возможность вводить учетные данные для внешнего IdP вручную (через автоматизацию тестирования)   -  person dutzu    schedule 03.11.2020


Ответы (2)


Итак ... после еще нескольких копаний, после того, как задали правильный вопрос, который в конечном итоге был:

Как отключить встроенную проверку подлинности Windows в Chrome?

Я нашел этот контрольный список для условий и этот ответ на SO.

Исправление заключалось в добавлении аргумента запуска в chromium для отключения WIA. Вот важная часть ниже:

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

Это заставит Chrome представить базовое приглашение для аутентификации для учетных данных.

Однако, когда я объединил это с настраиваемой строкой userAgent, которой нет среди агентов пользователя, поддерживаемых сервером ADFS, мне удалось перейти на страницу входа в 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'
})
person dutzu    schedule 04.11.2020

Вам необходимо отправить вызовы на прокси-сервер веб-приложения или настроить внутренний. Прокси приложения Wep не поддерживает встроенную проверку подлинности Windows.

person Alfredo R    schedule 03.11.2020
comment
Кто они? Кто не поддерживает WIA? - person dutzu; 04.11.2020
comment
@dutzu WAP. Обновил свой ответ. - person Alfredo R; 05.11.2020
comment
может быть решением. Но не для моего варианта использования. Я хочу иметь возможность автоматически проверять, что аутентификация по-прежнему работает для моих клиентов, поэтому я не могу обеспечить, чтобы у каждого клиента, использующего ADFS, был WAP. - person dutzu; 05.11.2020