2010-04-15 54 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