asp应用程序中的WindowsIdentity始终返回NT AUTHORITY \ SYSTEM

时间:2017-01-18 12:56:13

标签: c# asp.net iis devexpress windows-authentication

在过去的几天里,我已经阅读了很多关于如何在我的asp应用程序(使用devexpress xaf开发)中获取当前用户的建议,但到目前为止没有任何对我有用。

的返回值
WindowsIdentity.GetCurrent().Name

始终是NT AUTHORITY \ SYSTEM。 我尝试过像this这样的建议,以及在devexpress论坛中发现的一对。

我认为应该起作用的是

  • 将我的应用的Web.config设置为

包括

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

(我也试过将上面的imporsonation设置为false但没有变化)

  • 在IIS中设置我的网站以使用Windows身份验证 enter image description here

    • 像这样设置应用程序池

enter image description here

但结果仍然是NT AUTHORITY \ SYSTEM。

1 个答案:

答案 0 :(得分:0)

由于“NT AUTHORITY \ SYSTEM”是“Builtin \ Administrator”的成员,因此默认授予SYSADMIN服务器角色。 默认情况下,本地系统帐户是本地Administrators组的成员,因此是SQL Server中sysadmin组的成员。

要启用模拟,请为web.config中的identity元素设置impersonate =“true”。

<system.web>
  <identity impersonate="true" />
</system.web>

还可以从IIS启用或禁用模拟。

  1. 在IIS中选择Web应用程序
  2. 双击“身份验证”图标
  3. 选择“ASP.NET模拟”
  4. 点击IIS中右侧面板中的操作下的“禁用”或“启用”链接。
  5. 这将自动更改web.config文件。
  6. 将DefaultAppPool的“托管管道模式”设置为“经典”。

    运行应用程序,注意现在使用“NT AUTHORITY \ IUSR”帐户执行应用程序代码,而不是“IIS APPPOOL \ DefaultAppPool”