WindowsIdentity始终返回IIS用户

时间:2017-07-14 07:54:02

标签: asp.net iis windows-authentication

我有一个asp.net Web应用程序,我尝试在其上实现Windows身份验证。

该应用程序托管在IIS上,并在管理员帐户下运行。

在应用程序中,我试图获取当前Windows登录用户的名称,例如Catalin Gavan。

无论我尝试什么,我总是得到管理员用户,即运行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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

在ASP.NET Web窗体中,您应该访问Page.User,并且在ASP.NET MVC或Web API中,您应该相应地调用Controller.UserApiController.User。此用户标识来自请求,并设置为线程标识。

WindowsIdentity.GetCurrent返回进程标识,这显然是您设置的应用程序池标识。