[microsoft/playwright][问题]:API测试中通过NTLM认证

2024-05-09 239 views
3
你的问题

您好,请问API测试中如何通过NTLM认证?现在,我只需要传递 HttpCredentials,并且需要传递 NetworkCredential。

我的 API 位于 IIS Windows 身份验证后面。

请指教。

回答

1

目前没有内置支持。但是,您仍然应该能够使用 APIRequestContext API 手动响应安全挑战。将此作为功能请求开放以收集更多反馈。

5

如果能开箱即用就太好了。我刚刚偶然发现了它,作为一个丑陋的临时解决方案,使用了带有curl的powershell步骤,我可以-UseDefaultCredentials直接通过。

5

目前没有内置支持。但是,您仍然应该能够使用 APIRequestContext API 手动响应安全挑战。将此作为功能请求开放以收集更多反馈。

感谢您的回复。您有任何关于通过 APIRequestContext 转发凭据的示例吗?

7

如果 HTTP 代理能够支持 N​​TLM 身份验证,那就太好了。在我们的例子中,我们的 Web 应用程序具有 NTLM 身份验证,因此我们的所有场景目前都被阻止。如果我们能够在即将发布的版本中优先考虑对 HTTP 代理的 NTLM 身份验证支持,我将不胜感激。

3

如果能开箱即用就太好了。我刚刚偶然发现了它,作为一个丑陋的临时解决方案,使用了带有curl的powershell步骤,我可以-UseDefaultCredentials直接通过。

我在 NTLM 身份验证方面面临同样的问题。您能否分享有关 Curl 和 PowerShell 解决方法的更多信息?我可以通过传递 -UserDefaultCredentials 使其与 RestSharp 一起使用,但找不到在 PlayWright APIRequest 中传递 Curl 的方法。

4

如果能开箱即用就太好了。我刚刚偶然发现了它,作为一个丑陋的临时解决方案,使用了带有curl的powershell步骤,我可以-UseDefaultCredentials直接通过。

我在 NTLM 身份验证方面面临同样的问题。您能否分享有关 Curl 和 PowerShell 解决方法的更多信息?我可以通过传递 -UserDefaultCredentials 使其与 RestSharp 一起使用,但找不到在 PlayWright APIRequest 中传递 Curl 的方法。

我有一个 TS+Pw 项目,我将 PS 部分包装在一个方法中:

  private static async powershellCall(endpoint: string) {
    const {exec} = require('child_process');
    const lock = `curl -Method PUT -UseDefaultCredentials -Headers @{'Accept'='application/json';} http://${process.env.ENVIRONMENT}/api/${endpoint}`;
    exec(lock, {'shell': 'powershell.exe'}, (error, stdout, stderr) => {
    });
    return exec;
  }
7

如果能开箱即用就太好了。我刚刚偶然发现了它,作为一个丑陋的临时解决方案,使用了带有curl的powershell步骤,我可以-UseDefaultCredentials直接通过。

我在 NTLM 身份验证方面面临同样的问题。您能否分享有关 Curl 和 PowerShell 解决方法的更多信息?我可以通过传递 -UserDefaultCredentials 使其与 RestSharp 一起使用,但找不到在 PlayWright APIRequest 中传递 Curl 的方法。

我有一个 TS+Pw 项目,我将 PS 部分包装在一个方法中:

  private static async powershellCall(endpoint: string) {
    const {exec} = require('child_process');
    const lock = `curl -Method PUT -UseDefaultCredentials -Headers @{'Accept'='application/json';} http://${process.env.ENVIRONMENT}/api/${endpoint}`;
    exec(lock, {'shell': 'powershell.exe'}, (error, stdout, stderr) => {
    });
    return exec;
  }

感谢您分享代码片段。这很有帮助。我还有一个问题。您如何将此方法传递给 PlayWright APIRequest?

我为我的 API 调用提供了有效的 curl 命令,但不确定如何将其链接到 PlayWright APIRequest!

有没有办法将curl传递给PlayWright API调用,或者需要继续仅使用curl进行API测试。

再次感谢您的时间和支持。

3

感谢您分享代码片段。这很有帮助。我还有一个问题。您如何将此方法传递给 PlayWright APIRequest?

我没有将它传递给 Pw API 请求,它隐藏在服务中,我只是将其称为测试中的一个步骤,例如await commonElements.unlockElementViaApi(elementGuid);- 所以它是相当令人讨厌的 hack,然后是 NTLM 问题的通用解决方案:)

3

是否有机会很快实现这一点,或者在 TypeScript 中运行测试时是否有其他方法可以使用 NTLM 身份验证?

0

我们在尝试测试 Windows 身份验证 NTLM 背后的 api 时面临类似的问题

9

同样的挑战,是否有任何更新或预期版本来处理这种情况

2

@yury-s 很抱歉直接标记您。有计划在不久的将来实施这一计划吗?有关如何使用具有 NTLM 身份验证的剧作家打开 Web 应用程序的任何建议。