我现在在互联网上搜索了将近 4 天,但我被困住了。
我创建了一个简单的 ASP MVC4 Intranet 网站,并将其部署到名为: 的服务器iis
。那台电脑和我的电脑在同一个域内。
在我的域中,我有 3 台计算机:my_pc
、iis
服务器和sql
服务器。
当我在我的电脑上输入地址http://iis
时,我看到我已正确登录:
这适用于 IE 和 Chrome。<- 到目前为止一切正常!
当我尝试在我的网页 - WebAPI 控制器中执行 sql 查询时,问题就开始了。
在 IE 上我得到正确的结果,但在 Chrome 上我得到错误:
在 Web.config 里面我有需要的配置:
<authentication mode="Windows" />
<identity impersonate="true" />
在 IIS 内部,我禁用了匿名身份验证并启用了 Windows 身份验证。
我的 IIS 被信任将请求委托给我的 SQL 服务器。
最奇怪的部分是,当我尝试打开我的网页(使用 sql 查询)时出现错误,然后当我在 IE 中打开相同的网页(成功)并且我刷新 Chrome 网站时正确加载并工作了一段时间(随机,有时 5 分钟,有时 30 秒)。
我试过向[Authorize]
特定方法添加属性,但这没有帮助。
Chrome 似乎没有将 kerberos 令牌传递给 IIS。
我已经尝试过此处描述的步骤:http: //dev.chromium.org/developers/design-documents/http-authentication但没有任何运气。
有人可以逐步指导我如何配置 Google Chrome 并休息(IIS,SQL,如果需要)以在 Chrome 中使用 Windows 身份验证吗?
您的问题是您正在使用铬文档来解决铬问题。虽然相似,但它们是两种不同的浏览器。您需要通过将 IIS 可以委派到的服务器列入白名单来启用委派。您在 Chrome 中执行此操作的方式类似于 chromium,但对于注册表项,您需要使用 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] 作为 chrome 而不是 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium] 作为 chrome .
当你阅读文档时,你会发现你可以使用组策略、Chrome for Business 或命令行来启用委派,但在你的设置中,我假设你使用了注册表选项。我发现要设置的关键是 AuthNegotiateDelegateWhitelist。将值设置为“*”以开始。一旦你让它工作,通过将 * 更改为逗号分隔的服务器列表,通过 IP 地址或 DNS 名称将它锁定到你想要的服务器。允许通配符。您可能还想查看 AuthServerWhiteList 键。