使用 kinit + chromedriver 进行硒测试

Selenium tests with kinit + chromedriver

我正在使用 java selenium 程序,同时 运行 在 Linux VM 上通过 Google Chrome.[=11 测试网站=]

此站点需要 Kerberos 身份验证。

我需要 Chrome驱动程序来创建 chrome 的实例,这些实例具有我的有效密钥表 + 等

KEYTAB_FILE_PATH="/home/me/my.keytab"
KERBEROS_PRINCIPAL_NAME="HTTP/myuser@MY.DOMAIN.COM"
kinit -kt "${KEYTAB_FILE_PATH}" "${KERBEROS_PRINCIPAL_NAME}"
echo "Kerberos kinit login was successful!"
java -jar myapp.jar

chrome 网络驱动程序创建了一个 chrome,它似乎没有有效的 kerberos 票证。

有什么方法可以确保将我的 kerberos ksession 传递给由 chrome 驱动程序 exe 派生的 chrome 进程?我在这里错过了什么?

我上面提供的信息是处理支持协商身份验证的 Selenium 测试的正确方法。

  • 运行一个kinit
  • 在 kinit 运行 之后启动你的 selenium java 程序。
  • 在您的 selenium 程序中,确保正确设置 --auth-server-whitelist--auto-negotiate-delegate-whitelist 以允许您的 kerberos 票证提供者参与身份验证握手。 (例如,您的活动目录服务器)。

这应该会导致所有 Chromium 进程也具有相同的 kinit,并且能够进行协商身份验证。

但是,当 运行在 Headless 模式下运行时,有一个错误会影响许多版本的 Chromium。 https://bugs.chromium.org/p/chromium/issues/detail?id=924746

因此,如果您恢复使用 chromium 70.x,它将起作用。虽然我还没有验证,但看起来这是在未来版本的 chromium 上修复的。因此,如果您迁移到最新版本的 Chromium,这也应该可以解决该问题。