2013-11-22 56 views
6

我有一種情況,連接到我的web服務(存在於另一臺服務器上)的客戶端必須訪問SQL Server數據庫和SSAS服務器。SSAS與Kerberos委派獲取連接超時錯誤

它必須使用訪問SQL Server和SSAS多維數據集時調用該服務的客戶端的憑據。

對於這個工作我做

VAR winId = HttpContext.Current.User.Identity爲的WindowsIdentity; var ctx = winId.Impersonate(); //訪問數據庫/ SSAS ctx.Undo();

在我的服務中,訪問SQL Server數據庫時工作正常。

然而,當我訪問SSAS服務器我得到 「連接或者超時或丟失」

有許多帖子一樣 http://denglishbi.wordpress.com/2009/03/31/windows-server-2008-kerberos-bug-%E2%80%93-transport-connection-issues-with-ssas-data/ http://sqlblogcasts.com/blogs/drjohn/archive/2009/03/28/kerberos-kills-large-mdx-queries-on-windows-server-2008-ssas.aspx

在這一點,但我使用的是Windows Server 2008 R2 我的服務在這裏居住,所以這應該不成問題,因爲這個錯誤應該已經由Microsoft修復。

任何有關如何最好地診斷這個問題的信息將不勝感激。

澄清SSAS服務器確實有SPN。這實際上是在一個點上工作,但現在已經停止。似乎沒有重複的SPN或任何其他信號。

有趣的是它在一臺SSAS服務器上間歇性地工作,但似乎一直工作在另一臺SSAS服務器上。 他們都有命名的SPN由本文件

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

回答

1

我的生產環境是在非常大的公司Active Directory網絡上進行負載平衡(並且負載很重)。下面進行了大量測試,最終確定了可行的設置。

  • 我也可以在Windows 2008上運行服務器R2
  • 我的Web服務在ASP.NET中的IIS。對於身份驗證,我啓用了「Windows身份驗證」和「ASP.NET模擬」。內核模式被禁用,提供者爲「Negotiate:Kerboros」
  • SPNS和Trusted Delegation是爲AD帳戶設置的。我的廣告帳戶看起來像sys_myservice(SYS_只是在我的公司的命名約定)
  • 應用程序池標識設置爲使用sys_myservice
  • 後,你做的所有這些改變你的開發ENV,重新啓動整個服務器。出於某種奇怪的原因,當我們啓用新服務器並對其進行配置時,這總是很有必要的

使用此設置,我的Web服務訪問使用Windows Kerboros身份驗證的SSAS,SQL Server以及更多,並且所有查詢都在用戶的憑據下正確執行。

與我的設置不同的是,在IIS級別啓用了ASP.NET模擬。我很難在代碼中扮演你正在做的事。如果您獲得代碼級模擬以使用您的工作流程,那麼我會非常希望看到您發佈更新。

忘了提。我的服務位於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" /> 
+0

我的系統管理員告訴我他重建了SPN,無論這意味着什麼,現在可以工作 – TheWommies

0

你有沒有嘗試使用Wireshark的或任何其他網絡分析工具,什麼都看不到紅在故障點發生提及?如果您從最後提供更多故障排除觀察結果,那麼它可能更好。

此外,您的Web服務是否有負載平衡器?

Regards, Sasi。

+0

如何判斷我的Web服務是否具有負載平衡器?是的,我已經使用了wirshark,但不知道我是否能夠理解它 – TheWommies

1

我同意,間歇性地 '成功' SSAS實例是可疑的。我不知道它是否真的一直在使用Kerberos。可以使用negotiate/NTLM和Kerberos的組合,其中一個auth方法實際上正在工作,另一個正在接近失敗。值得再次看看SPN。此鏈接可能有所幫助:http://msdn.microsoft.com/en-us/library/dn194200.aspx