【问题标题】:Bypass NTLM auth when using Watir/Selenium to automate testing使用 Watir/Selenium 进行自动化测试时绕过 NTLM 身份验证
【发布时间】:2017-08-14 18:09:27
【问题描述】:

我了解 Watir 和 Selenium 在尝试登录网页进行测试时遇到了 NTLM 身份验证问题。我的研究表明,有两种正常的工作方式。 1. 将凭据添加到 URL 2. 使用自动身份验证插件/扩展。我目前没有在我的环境中使用扩展的选项,尽管我正在努力。所以,我只剩下传递凭据了。

我遇到的问题如下。

铬: 在 Chrome 中,我以http://password:user@example.com/ 手动传递凭据(就像我直接在浏览器中输入一样),它会打开页面,但不会填充弹出窗口。如果我尝试手动将其作为http://example.com?username=usr&password=password 传递,它会填充身份验证弹出窗口但不会继续。

如果我尝试使用以下代码使用 ruby​​ 进行自动化,我得到的只是未知的用户名和密码。我已经确认 usr 和 pwd 是正确的。

browser.goto("http://example.com?login=usr&password=password") browser.goto("http://password:usr@example.com/")

IE IE 的行为有点不同。 在 IE 中,我将凭据手动传递为http://password:user@example.com/,它返回一个找不到页面的错误。如果我尝试手动将其作为http://example.com?username=usr&password=password 传递,它会正确登录。

如果我尝试使用以下代码使用 ruby​​ 进行自动化,第一个示例会引发无法找到页面错误。第二个示例打开页面,但不填充弹出窗口。我已经确认 usr 和 pwd 是正确的。

browser.goto("http://example.com?login=usr&password=password") browser.goto("http://password:usr@example.com/")

我做错了什么?

我的环境是 Windows 7 Pro、IE 11 和 Chrome 60。

发现一篇文章表明 MS 在 URL 中删除了身份验证。所以 pwd:usr@ 不起作用是有道理的。文章编号:834489

【问题讨论】:

  • 不确定 IE,但 chrome v59+ 删除了对子资源请求中嵌入凭据的支持。例如:stackoverflow.com/questions/44658869/…
  • 感谢您的回复。 IE 不久前删除了同样的东西。我仍然没有找到解决此问题的方法。

标签: ruby selenium authentication watir


【解决方案1】:

好的,我找到了答案。在与我公司的高级架构师讨论后,无法通过设计访问 NTLM Windows 身份验证表单。从字面上看,它的设计使其不能以这种方式自动化作为安全措施。

他提出的解决身份验证问题的一种解决方法是使用 C#(我们的标准)之类的东西,并在假设用户已经登录的情况下打开浏览器。这将完全绕过授权弹出将问题呈现为空。我不清楚究竟如何做到这一点,但我希望这为其他人提供了一个有用的方向。

【讨论】:

  • 您可以使用类似于 Firefox 的 AutoAuth 插件的东西。在这里查看:watir.com/guides/authentication。具体来说,它说...“如果上述方法不起作用,例如,您正在针对 NTLM 代理进行身份验证,您可能会发现使用 AutoAuth Firefox 扩展程序将使您能够使用您的凭据自动关闭此对话框。”跨度>
猜你喜欢
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 2018-04-29
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多