【发布时间】:2013-01-16 21:23:57
【问题描述】:
我有 2 个 ASP.NET MVC 3 应用程序。我通过 web.config 使用模拟来允许我查询 Active Directory 以获取有关用户的详细信息。该应用程序使用 Windows 身份验证并且不允许匿名用户。一个应用程序是用户执行任务的主要应用程序。另一个允许用户设置其他用户在应用程序一中看起来像他们。
测试用户收到以下错误:
SQL1092N "<DOMAIN ID>" does not have the authority to perform the requested command.
这发生在我从主要应用程序向辅助应用程序发送 Web 请求后。为了让它工作,我必须让请求模拟实际用户,而不是应用程序用于模拟的身份。这实际上是我发布并回答的一个 SO 问题。就在这里:How do I call an MVC Action via a WebRequest and validate the request through Active Directory?
在该代码的末尾,我调用:
impersonationContext.Undo();
在此 Web 请求发生后,主应用程序尝试访问数据库,现在看来上述调用已撤消应用程序的模拟,因此用户尝试执行任何打开数据库连接的操作都失败了。至少,这是我在猛烈抨击一天后的工作理论。
我的问题是,如何在 web.config 中让应用程序的模拟还原给用户?或者,在发出我的网络请求时,有没有办法确保模拟上下文仅适用于该请求?
所有这一切的重点是第二个应用程序有自己的 sql server 数据库。主要应用程序使用 DB2。我想编写一次数据库访问代码,但在两个应用程序中都使用它。目前这就是我所做的,但我依靠网络请求获取数据的方法可能不是最好的方法。
我愿意接受任何想法、cmets、建议和/或批评。我该如何处理?
【问题讨论】:
-
我有什么需要澄清的吗?问题的措辞是否会妨碍您?欢迎反馈。我不介意在可能的情况下改写或澄清。
标签: c# asp.net asp.net-mvc asp.net-mvc-3 impersonation