我目前在 IIS Web 服务器上设置了 kerberos 委派。
用户连接到 Web 服务器上的网站,并可以要求在 Web 应用程序中生成 SSRS 报告。Web 应用程序通过调用 SSRS Web 服务 ReportExecution2005.asmx 来生成报告,以生成报告并将报告作为 pdf 二进制数组返回,然后显示在屏幕上。
IIS 网站针对使用服务帐户的应用程序池运行。IIS 服务器和服务帐户都受委派信任。
当我在 IE 中查看该站点并请求报告时,一切正常。当我通过 Chrome 或 FireFox 发出相同的调用时,尽管成功发出了 kerberos 票证,但对 SSRS 服务器的调用失败并显示 401。
当我调用 SSRS 服务时,我尝试将调用设置为同时使用 System.Net.CredentialCaceh.DefaultCredentials 和 System.Net.CredentialCaceh.DefaultNetworkCredentials
谁能向我解释为什么当浏览器不是 IE 时 kerberos 委托会失败?
- 更新
我最初的说法是,在所有浏览器中访问该站点会导致发出 Kerberos 票证是错误的。只有当我使用 IE 访问该站点时,它才会生成一张票。Chrome / Firefox 仅解析为 NTLM。
-- 更新 2
我现在已经确定 Firefox 和 Chrome 默认不使用协商协议。为了允许对我的站点进行基于 kerberos 的身份验证,我必须使用 about:config 区域明确声明它是两个浏览器的受信任站点。
如果其他人有同样的问题,请参考http://blog.webonweboff.com/2010/12/integrated-windows-authentication-and.html