【问题标题】:asp.net Impersonate User for network resource accessasp.net Impersonate User 进行网络资源访问
【发布时间】:2011-02-08 10:51:32
【问题描述】:

代码:

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 在这两种情况下都传递了一个有效的认证令牌。

任何想法发生了什么。谢谢。

【问题讨论】:

    标签: asp.net iis impersonation


    【解决方案1】:

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

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

    我不记得配置的细节,但我知道它被称为委托或“Kerberos 双跳”。 “约束委派”是指您配置为只允许一种类型的委派。 IE,您的应用仅在与此其他特定服务器上的 Active Directory(端口 xyz)通信时才允许委派安全上下文 - 否则不允许。

    Understanding Kerberos Double Hop

    请参阅DelegConfig - 它有助于配置委派。

    另见:TechNet Article

    还有:this other article

    【讨论】:

    • 我刚刚意识到我错过了你的倒数第二句话。如果您已经排除了授权问题,请忽略我的回答。
    • 感谢本的回复。我很确定这与 AD 有关,因为它仅适用于本地请求。关于 Kerberos Double Hop 的链接非常有见地。不过,在这一点上,我几乎放弃了,走上了一条完全不同的路。
    • 嘿没问题。我们的系统管理员花了很长时间才在我们的服务器上正确配置委托 - 等待是痛苦的。如果您可以围绕它进行设计,那么无论如何。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多