首页 > 解决方案 > 使用 kinit + chromedriver 进行硒测试

问题描述

我在 Linux VM 上运行时使用 java selenium 程序通过 Google Chrome 测试网站。

此站点需要 Kerberos 身份验证。

我需要 ChromeDriver 来创建具有有效 keytab + 等的 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 web 驱动程序创建了一个似乎没有有效 kerberos 票证的 chrome。

有没有办法确保我的 kerberos ksession 被传递给由 chromedriver exe 分叉的 chrome 进程?我在这里想念什么?

标签: linuxseleniumgoogle-chromekerberos

解决方案


我上面提供的信息是处理支持协商身份验证的 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,这也应该可以解决问题。


推荐阅读