2017-07-14 61 views
0

我有一個asp.net web應用程序,我嘗試實現Windows身份驗證。WindowsIdentity總是返回IIS用戶

應用程序託管在IIS,並在管理員帳戶下運行。

在應用程序中,我試圖讓當前的Windows登錄的用戶,前克特林加文的名字。

無論我嘗試,我總是得到管理員用戶,其運行ApplicationPool之一。

這裏是我的嘗試:

Request.LogonUserIdentity); // "NT AUTHORITY\\IUSR" 
WindowsIdentity.GetCurrent(); // "ADIDEVNET\\administrator" 
WindowsIdentity.GetAnonymous();  
WindowsIdentity.GetCurrent(true); // null 
WindowsIdentity.GetCurrent(false); // "ADIDEVNET\\administrator" 

我怎樣才能獲得當前登錄的Windows用戶,從後面的代碼?

AppPool settings enter image description here

回答

0

打開Windows身份驗證,並且應該修復它。其次,當您在高級設置中將身份設置爲管理員時,它將始終以管理員身份登錄。從那裏刪除身份,以及。設置後,用戶將「模擬」管理員帳戶。

試試這些web.config設置。

<system.web> 
... 
<authentication mode="Windows" /> 
<authorization> 
    <deny users="?" /> <!-- may want to remove this if you want to allow anonymous --> 
</authorization> 
<identity impersonate="false" /> 
</system.web> 
0

在ASP.NET Web窗體,你應該訪問Page.User,並在ASP.NET MVC或Web API,你應該叫Controller.UserApiController.User相應。該用戶身份來自請求並被設置爲線程身份。

WindowsIdentity.GetCurrent返回進程標識,這顯然是將應用程序池標識。