带有Kerberos委派的SSAS收到连接超时错误



我遇到一种情况,连接到我的Web服务(存在于另一台服务器上)的客户端必须访问SQL server数据库和SSAS服务器。

在访问SQL Server和SSAS多维数据集时,它必须使用调用服务的客户端的凭据。

为了这个工作,我做

var winId=HttpContext.Current.User.Identity as WindowsIdentity;var ctx=winId。Impersonate();//Access数据库/SSSASctx。Undo();

在我的服务中,它在访问SQL Server数据库时运行良好。

但是,当我访问SSAS服务器时"连接超时或丢失"

有很多帖子http://denglishbi.wordpress.com/2009/03/31/windows-server-2008-kerberos-bug-%E2%80%93-ssas数据的传输连接问题/http://sqlblogcasts.com/blogs/drjohn/archive/2009/03/28/kerberos-kills-large-mdx-queries-on-windows-server-2008-ssas.aspx

上,但我使用的是Windows Server 2008 R2我的服务所在的位置,所以这应该不是问题,因为这个错误应该由微软修复。

任何关于如何最好地诊断这个问题的信息都将不胜感激。

为了澄清SSAS服务器确实有SPN。这在某一点上确实有效,但现在已经停止了。看起来没有重复SPN或任何东西的迹象。

有趣的是,它在一个SSAS服务器上间歇性工作,但在另一个服务器上似乎一直工作。如本文件所述,他们都已命名SPN

https://support.pyramidanalytics.com/entries/22056243-Configuring-Kerberos-Delegation-for-Named-Instances-of-SSAS-with-Active-Directory-and-additional-pro

我的生产环境是一个负载平衡的(并且在重负载下),位于一个非常大的公司Active Directory网络上。以下内容经过了大量测试,最终确定了有效的设置。

  • 我也在Windows 2008 Server R2上运行
  • 我的web服务位于IIS中的ASP.NET中。为了进行身份验证,我启用了"Windows身份验证"one_answers"ASP.NET模拟"。内核模式被禁用,提供程序为"协商:Kerboros"
  • SPNS和Trusted Delegation是为AD帐户设置的。我的AD帐户看起来像sys_myservice(sys_只是我公司的一个命名约定)
  • 应用程序池标识设置为使用sys_myservice
  • 在dev-env中进行所有这些更改后,重新启动整个服务器。出于某种奇怪的原因,当我们引入新服务器并配置它们时,这总是必要的

通过此设置,我的web服务访问SSAS、SQL Server等使用Windows Kerboros身份验证的服务,并且所有查询都在用户凭据下正确执行。

我的设置与您的不同之处在于,ASP.NET模拟是在IIS级别启用的。我在代码中进行模拟时遇到了问题,这正是你正在尝试做的。如果你让代码级别的模拟与你的工作流一起工作,我真的很想看到你发布更新。

忘了提。我的服务在MVC应用程序中,我对所有Action方法应用全局过滤器,以强制应用程序验证所有连接。

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new System.Web.Mvc.AuthorizeAttribute());
    }

以及在我的web.config system.web部分

<authentication mode="Windows" />
<identity impersonate="true" />

我同意间歇性"成功"的SSAS实例是可疑的。我想知道它是否真的一直在使用Kerberos。可能使用协商/NNTLM和Kerberos的组合,其中一种身份验证方法实际工作,另一种方法即将失败。可能值得再看一眼SPN。此链接可能有助于:http://msdn.microsoft.com/en-us/library/dn194200.aspx

您是否尝试使用Wireshark或任何其他网络分析工具来查看在故障点发生的任何红色事件?如果您能从您的端提供更多的故障排除观察结果,可能会更好。

此外,您的web服务是否有负载均衡器?

谨致问候,萨西。

最新更新