linux - 使用 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 进程?我在这里想念什么?
解决方案
我上面提供的信息是处理支持协商身份验证的 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,这也应该可以解决问题。
推荐阅读
- r - 如何使用 r 在数据框中获取嵌套循环的输出?以及如何放置时间循环?
- python - Python 值错误:没有足够的值来解压,适用于 linux 但不能在 Windows 上运行
- jquery - 模态事件关闭后如何使切换选项恢复默认值?
- django - 当搜索字段为空时,Django SearchFilter 正在显示所有数据
- javascript - Vue.js axios 获取服务器的动态IP
- python - 如果值不存在,如何退出 for 循环?
- bash - 从字符串中第二次出现的破折号中提取字符
- node.js - 在尝试了很多命令后,我得到了同样的错误(nodemon:找不到命令)
- javascript - 请参阅 HTML 中的 Node-js 值
- wordpress - 当他们的订单准备好在 woocommerce 中交付时,有没有办法接受客户的全额付款?