The*_*ies 6 sql-server ssas kerberos delegation asmx
我有一种情况,客户端连接到我的webservice(存在于另一台服务器上)必须访问SQL Server数据库和SSAS服务器.
它必须使用在访问SQL Server和SSAS多维数据集时调用服务的客户端的凭据.
为此,我这样做
var winId = HttpContext.Current.User.Identity as WindowsIdentity; var ctx = winId.Impersonate(); // Access Database/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服务器上间歇工作,但似乎一直在为另一台服务器工作.它们都已经命名为本文档中提到的SPN
我的生产环境是一个非常大的企业 Active Directory 网络上的负载平衡(并且负载很重)。下面进行了大量的测试,最终确定了有效的设置。
通过此设置,我的 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());
}
Run Code Online (Sandbox Code Playgroud)
在我的 web.config system.web 部分
<authentication mode="Windows" />
<identity impersonate="true" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |