在 Docker 中为 Selenium 项目在 Google Chrome 中设置 Windows 身份验证(Kerberos)

Setting up Windows Authentication (Kerberos) in Google Chrome in Docker for Selenium project

我正在 .NET Core 3.1 中构建一个 Web API,它使用带有 Google Chrome 驱动程序的 Selenium 来执行各种任务,例如访问网站和截取屏幕截图.它访问的网站也可能会访问其他需要 windows 身份验证才能访问的内部网站 API。 API 通过 Docker (Linux) 和 Kubernetes 部署。

在本地,一切正常 - 它能够访问我们所有的内部网站,甚至是需要 Windows 身份验证的网站。部署后,它无法再访问具有 API 且需要 Windows 身份验证的网站 - 它收到未经授权的错误,但它仍然可以访问其他网站并且在其他情况下工作正常。

我尝试了多种方法来让它正常工作

设置并正常工作的正确方法是什么?我不是 100% 了解如何为 Docker 容器设置 Kerberos 密钥表,但我可以询问具体情况是否与解决此问题有关。

正在使用

  1. Selenium 版本 4.0.0-alpha07
  2. Google Chrome 版本 87
  3. Google Chrome Linux
  4. 的驱动程序版本 87.0.4280.20
  5. Chrome 驱动程序选项参数:“--headless”、“--no-sandbox”、“--disable-dev-shm-usage”、“--ignore-certificate-errors”、 "--allow-运行ning-insecure-content", "--disable-web-security", "--auth-server-whitelist=*", "--auth-negotiate-delegate-whitelist= *", "--disable-gpu", "--window-size=1920,1080"
  6. Docker 容器基础是 mcr.microsoft.com/dotnet/core/sdk:3.1,downloading/installing Google Chrome,它的驱动程序单独,加上一些内部命令

谢谢

对于可能面临相同问题的任何人,访问部署在 Docker (Linux) 上的 api 时会发生这种情况,Kerberos 正在执行反向 dns 查找但没有成功。

解决方案是在 docker/kubernetes 环境中添加反向 dns 记录,以便能够成功进行查找并继续进行 Kerberos 握手。