使用谷歌浏览器或Safari在Mac上集成Windows Auth(NTLM)

Lou*_*cci 14 macos iis-7 ntlm google-chrome

启用了Windows身份验证的IIS7 Intranet站点.当从Windows上的Chrome点击时,传递身份验证工作正常(没有用户/密码提示),但是,Mac上的Chrome会出现提示.由于内部网络使用CAC/PKI,因此没有人拥有密码.

我尝试在网站上切换Windows身份验证以进行协商,但同样的用户/传递提示.

appcmd set config /section:windowsAuthentication /-providers.[value='Negotiate']
Run Code Online (Sandbox Code Playgroud)

有人知道OS X上的Chrome解决方案吗?

编辑

OS X 10.6.8

Centrify for Mac将用于通过CAC对(Windows 2008 R2 ActiveDirectory)网络进行身份验证.

编辑2

有一个代理设置,但它被绕过本地Intranet站点,所以我不认为它正在发挥作用.

还尝试使用--auth-server-whitelist命令行开关,没有用.

编辑3

open 'Google Chrome.app' --args --auth-server-whitelist="*DOMAIN.TLD" --auth-negotiate-delegate-whitelist="*DOMAIN.TLD" --auth-schemes="digest,ntlm,negotiate"
Run Code Online (Sandbox Code Playgroud)

不幸的是,谷歌Chrome for Mac无法在每次加载时指定命令行参数,因此需要制作某种shell脚本.

在登录时运行以下shell脚本是解决Chrome更新和额外文档图标的最终解决方案.

#!/bin/bash
cd /Applications/Google\ Chrome.app/Contents/MacOS/
if [ -f 'Google Chrome.bin' ];
then
   echo "Already Modified"
else
   sudo chmod u+wr ./
   sudo mv 'Google Chrome' 'Google Chrome.bin'
   sudo echo "#!/bin/bash" > "Google Chrome"
   sudo echo 'exec /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.bin --args --auth-server-whitelist="*DOMAIN.TLD" --auth-negotiate-delegate-whitelist="*DOMAIN.TLD" --auth-schemes="digest,ntlm,negotiate"' >> "Google Chrome"
   sudo chmod a+x 'Google Chrome'
   echo "NTLM Will now work in chrome"
fi
Run Code Online (Sandbox Code Playgroud)

one*_*mer 5

目前这不是一个错误。Mac 版本的 Chrome 根本不支持/尊重 Kerberos 策略(“协商”Windows 身份验证),除非域被列入白名单并且浏览器从命令行触发。请参阅 2011 年 10 月 31 日发布的链接:

http://code.google.com/p/chromium/issues/detail?id=102339

不过,您似乎可以将域永久列入白名单:

http://www.google.com/support/forum/p/Chrome/thread?tid=592eb87350d9d528&hl=en


由于您已经尝试过白名单开关,所以我仔细观察,发现这是 OSX 的东西...10.7 是该开关与 Chrome 正常工作所必需的。如果没有像 Centrify 这样的第三方工具,您的 10.6 版本将无法运行。

这不是一个令人高兴的答案,而是事实。


小智 5

看来我们可以在终端中进行以下配置,

$ defaults write com.google.Chrome AuthServerWhitelist "*.example.com"
$ defaults write com.google.Chrome AuthNegotiateDelegateWhitelist "*.example.com"
$ defaults write com.google.Chrome AuthSchemes "digest,ntlm,negotiate"
Run Code Online (Sandbox Code Playgroud)