簡體   English   中英

模擬僅在用戶特定時才有效

[英]Impersonation only works when a user is specificed

我在使用沒有指定用戶的模擬訪問Web服務時遇到問題。

Works: <identity impersonate="true" userName="DOMAIN\\USERNAME" password="MyPassword" / >

不起作用

<identity impersonate="true" /> 

在調試時,我使用下面的代碼來驗證正在使用的域和用戶名,它們是。

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

這是我的web.config的更多內容

<authentication mode="Windows" />
<identity impersonate="true" /> 
<authorization>
  <allow users="*" />
  <deny users="?"/>
</authorization>

我正在登錄提示,圖片如下 在此輸入圖像描述

任何想法為什么它只有在我在web.config中指定用戶時才有效? 我使用與<identity impersonate="true" userName="DOMAIN\\USERNAME" password="MyPassword" / >相同的Domain\\Username和密碼登錄。 我已經嘗試過多個帳戶,當我將他們的憑據放在web.config時它們都可以正常工作但是沒有一個工作時將身份設置為<identity impersonate="true" />並登錄。

編輯遠程服務器返回錯誤:(403)禁止。 在此輸入圖像描述

編輯2一切正常,在調試時,並在包含它托管的IIS的服務器上點擊服務,我嘗試了多個帳戶,他們都工作。 一切都在同一個領域

請注意https://support.microsoft.com/en-us/kb/306158中的以下文本

模擬ASP.NET應用程序的所有請求的特定用戶

若要模擬特定用戶對ASP.NET應用程序的所有頁面上的所有請求,您可以在該應用程序的Web.config文件的標記中指定userName和password屬性。 例如:注意在線程上模擬特定用戶的進程的標識必須具有“作為操作系統的一部分”權限。 默認情況下,Aspnet_wp.exe進程在名為ASPNET的計算機帳戶下運行。 但是,此帳戶沒有模擬特定用戶所需的權限。 如果您嘗試模擬特定用戶,則會收到錯誤消息。 此信息僅適用於.NET Framework 1.0。 .NET Framework 1.1不需要此權限。

若要解決此問題,請使用下列方法之一:將“作為操作系統的一部分”權限授予ASPNET帳戶(權限最少的帳戶)。

注意雖然您可以使用此方法來解決此問題,但Microsoft不建議使用此方法。 將運行Aspnet_wp.exe進程的帳戶更改為Machine.config文件的配置部分中的系統帳戶。

您可以將Aspnet_wp.exe進程設置為以您嘗試模擬以獲得所需權限的用戶身份運行。

這也在前面討論過: 你如何在.NET中進行模擬?

它可能是NTLM雙跳認證問題。 簡而言之,確保正確設置Kerberos SPN,以便使用它而不是NTLM。 這篇MSDN博客文章有很好的解釋。

http://blogs.msdn.com/b/besidethepoint/archive/2010/05/09/double-hop-authentication-why-ntlm-fails-and-kerberos-works.aspx

或者,基本或表單身份驗證也將實現您希望實現的目標。 這是因為應用程序將擁有用戶的憑據,如果配置正確,可以使用它們來訪問后端資源。

您可能還想查看Kerberos委派。 它是一種通過它的SPN將第二跳限制為僅一個資源的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM