双重模仿 - 从网站到服务再到服务

时间:2014-02-08 15:27:43

标签: c# asp.net asp.net-mvc wcf impersonation

我有一个ASP MVC网站,我们称之为WebSite。两个服务Service1和Service2。从WebSite我调用Service1,从Service1调用Service2。在WebSite中,我使用Windows身份验证。我想从WebSite呼叫具有用户权限的Service2。我读过关于双重模仿和授权的内容,但我想澄清一些事情......如果我在同一台机器上托管WebSite和两个服务,我还需要使用委托吗?我是如何在code / web.config中实际执行此操作的? 我用WebSite调用Service1((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()并且这很好,但是当我尝试从Service1调用Service2时,ServiceSecurityContext.Current.WindowsIdentity.Impersonate()抛出异常。 那么,我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

您的网络服务中没有HttpContext.Current。它是null,正如例外可能告诉你的那样。您可以从Web服务中的Thread.CurrentPrincipal获取当前用户。

答案 1 :(得分:0)

由于Service1Service2未对公共访问开放,您可以使用一些自定义参数来指示用户,他/她的角色或他/她的权限。我想这是最简单的解决方案。

更结构化的解决方案是对两个站点使用相同的身份验证领域。这不是很容易。 This可以让您更好地了解如何操作。

希望我帮忙!