You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright.NET中HttpCredentials无法用于Windows身份认证问题

问题原因与解决办法

首先明确:Playwright的httpCredentials配置只对HTTP基本/Digest认证生效,而你的网站采用的是Windows身份认证(NTLM/Kerberos),两者机制完全不同——Windows认证是通过系统级的SSPI协商完成的,默认会直接复用运行测试进程的本地用户凭据,所以你代码里设置的HttpCredentials根本没起作用。

至于JS版本能正常工作,大概率是环境或网站配置差异导致的:要么你的JS测试环境中,网站允许回退到基本认证;要么JS测试的浏览器配置刚好触发了认证适配(这种情况很少见)。

针对.NET版本的问题,给你几个可行的解决方向:

1. 配置浏览器命令行参数适配Windows认证

在启动Chromium时添加命令行参数,指定认证域名白名单并使用临时用户目录,避免复用本地凭据缓存:

var browser = await Playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Headless = false,
    Args = new[]
    {
        "--auth-server-whitelist=*.url.com", // 指定需要认证的目标域名
        "--auth-negotiate-delegate-whitelist=*.url.com", // 允许对该域名进行认证委派
        "--user-data-dir=C:\\temp\\playwright-temp-profile" // 临时目录,隔离现有用户配置
    }
});

2. 以目标Windows用户身份运行测试

如果要完全模拟指定用户的身份,直接用该用户权限启动测试进程即可,无需在代码里设置凭据:
打开命令提示符执行:

runas /user:DOMAIN\username "dotnet test"

这种方式下,浏览器会自动使用该用户的Windows凭据完成认证。

3. 让网站支持HTTP基本认证

如果网站的IIS配置允许,可以同时启用基本认证。这样你代码里的HttpCredentials就会正常生效,直接通过HTTP头传递凭据。

内容的提问来源于stack exchange,提问作者Grimm The Opiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 03:32:28