2010-04-15 61 views
3

代码:asp.net模拟用户

System.Security.Principal.WindowsImpersonationContext impersonationContext; 
impersonationContext = 
    ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 

//access network resources. 

impersonationContext.Undo(); 

的web.config:

<authentication mode="Windows">  
</authentication> 
<identity impersonate="true" 
userName="user" 
password="password"></identity> 

从web.config文件作为清楚,该应用在模拟的模式下运行。我需要临时模仿,以访问网络资源。我如上所示那样做。

如果我浏览到服务器上安装的本地IE上的网站,但是当我从我的PC或任何其他PC访问该应用程序时,我的访问被拒绝。

顺便说一句,这是所有企业域环境。所以IE在这两种情况下都会传递一个有效的身份验证令牌。

任何想法正在发生。谢谢。

回答

3

您需要确保服务器将应用程序中的模拟安全上下文委托给另一台服务器(您提到的网络资源)。

我很确定它在您登录到服务器时有效,因为它使用的是您直接登录的安全上下文,而不是应用程序中存在的模拟上下文。

我不记得配置的细节,但我知道它被称为代表团或“Kerberos Double Hop”。 “限制授权”是指您只能配置一种授权的情况。 IE中,只有在与其他特定服务器上的Active Directory(端口xyz)通信时,才允许您的应用程序委派安全上下文 - 否则不允许。

Understanding Kerberos Double Hop

DelegConfig - 它是在配置委派的帮助。

另见:TechNet Article

兼:this other article

+0

我才意识到我错过了你的第二个到最后一句。如果您已经排除了代表团问题,请忽略我的答案。 – HAL9000 2010-04-16 00:20:16

+0

感谢Ben的回复。我很确定这与AD有关,因为它只适用于本地请求。关于Kerberos Double Hop的链接非常有见地。尽管如此,我几乎放弃了,走了一条完全不同的路线。 – coderguy123 2010-04-16 13:27:30

+0

嘿没问题。我们的系统管理员花了很长时间才将代理团队配置在我们的服务器上,而且等待很痛苦。如果你可以通过一切手段来设计它。 祝你好运! – HAL9000 2010-04-16 20:13:05