我有一个 asp.net 应用程序(使用 windows 身份验证进行访问),它(由安全团队规定)需要使用集成安全性连接到远程 SQL Server 2005。因为它是远程 SQL 服务器,我需要模拟一个自定义帐户(模拟原始呼叫者不起作用)通过:
<identity impersonate = "true" userName="domainname\user" password="password" />
这工作正常。问题是我的应用程序还使用 ReportViewer 控件连接到 SSRS 服务器以满足报告需求。报表服务器位于单独的服务器上,安全团队要求对该服务器的所有调用都必须使用原始窗口的帐户进行审核。看来我唯一的选择是尝试将我的应用程序分成文件夹并在我的 web.config 中使用“位置”标签并使用单独的身份标签。如:
<location path="Reporting">
<system.web>
<identity impersonate = "true"/>
</system.web>
</location>
注意:没有指定用户名和密码,这意味着它应该模拟原始调用者。
然而,更复杂的是,我的应用是 Masterpage/content page 应用。母版页调用 SQL 来填充菜单等。底线是双重模拟轨道不起作用。我准备好举手宣布这不可能。如果有一种方法可以让应用程序模拟原始调用者,这将满足我的 SSRS 审计需求,同时作为自定义域帐户连接到 SQL 服务器。我不能使用 SQL authentication: not allowed 尽管这样可以解决这个问题。