使用 Google Chrome 或 Safari 在 Mac 上集成 Windows Auth (NTLM)

Posted

技术标签:

【中文标题】使用 Google Chrome 或 Safari 在 Mac 上集成 Windows Auth (NTLM)【英文标题】:Integrated Windows Auth (NTLM) on a Mac using Google Chrome or Safari 【发布时间】:2012-01-26 20:36:20 【问题描述】:

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

我已尝试切换站点上的 Windows 身份验证进行协商,但相同的用户/通过提示。

appcmd set config /section:windowsAuthentication /-providers.[value='Negotiate']

有人知道 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"

不幸的是,Mac 版 Google Chrome 无法在每次加载时指定命令行参数,因此需要制作某种 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

【问题讨论】:

您没有提供有关 Mac 如何在网络上进行身份验证的足够信息...有几个依赖项 - 例如您使用的 OSX 版本等 - 在当前状态下您的问题可以没有答案:-( @Yahia - 我更新了这个问题,希望现在可以回答,而无需做出假设。 据我所知,您想要的可能是不可能的。但为了安全起见,我强烈建议询问 Centrify 的供应商——也许他们有某种“用于 Web 应用程序的单点登录模块”来帮助解决这种情况...... @Yahia - 是否有 Mac+ChromeBrowser 配置可以使这成为可能?也许有一些代替 Centrify 的东西...... 你有机会使用 OSX 10.7 吗? 【参考方案1】:

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

$ 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"

【讨论】:

【参考方案2】:

defaults write com.google.Chrome AuthServerWhitelist '<your domain>' 将永久允许 kerberos 访问一个服务器或一组服务器 (*.mydomain.local)。

【讨论】:

【参考方案3】:

目前这不是错误。除非域列入白名单并且浏览器从命令行触发,否则 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 版本将无法运行。

不是一个快乐的答案,而是事实。

【讨论】:

【参考方案4】:

什么版本的 Chrome?这是一个活跃的错误,请确保您拥有最新版本。它应该工作......

http://chromium.googlecode.com/issues/attachment?aid=-4050060571219819368&name=Prompt.png&token=NHQTVDWyO_jUXxWmvuzGnGer2sc%3A1325131426103&inline=1

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

【讨论】:

大声笑旁注,NTLM 代码来自 mozilla! src.chromium.org/viewvc/chrome/trunk/src/net/http/… 这是最新版本的 Chrome(自动更新)。它不适用于我的问题中的 OSX+Centrify 配置。

以上是关于使用 Google Chrome 或 Safari 在 Mac 上集成 Windows Auth (NTLM)的主要内容,如果未能解决你的问题,请参考以下文章

最新版本的 Safari(Windows)与 Safari(MAC)、Google Chrome(Mac)与 Google Chrome(Windows)之间的渲染差异是啥?

在 iOS 的 Safari 中在 Google Chrome 中打开网页

Rails:上传 dropzone、S3、carrierwave,不能在 Safari 中工作,但在 Google Chrome 中工作

AudioContext 无法在 Safari 上运行,但在 Google Chrome 上运行

从 JavaScript 以编程方式打开 Safari / Google Chrome 开发人员工具

使用 flexbox 的 Google Chrome 视口锚定扩展方向