【问题标题】:WindowsIdentity in asp application always returns NT AUTHORITY\SYSTEMasp 应用程序中的 WindowsIdentity 总是返回 NT AUTHORITY\SYSTEM
【发布时间】:2017-06-02 20:48:30
【问题描述】:

在过去的几天里,我已经阅读了很多关于如何在我的 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>

(我也尝试将上面的模拟设置为 false 但没有更改)

  • 在 IIS 中设置我的站点以使用 Windows 身份验证

    • 这样设置应用程序池

但结果始终是 NT AUTHORITY\SYSTEM。

【问题讨论】:

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


    【解决方案1】:

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

    要启用模拟,请在 web.config 中为标识元素设置 impersonate="true"。

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

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

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

    将 DefaultAppPool 的“托管管道模式”设置为“经典”。

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

    【讨论】:

    • 谢谢,但如上面的截图所示,我已经启用了模拟。我还编辑了代码 sn-p 使其更清晰。我尝试将托管管道模式更改为经典,但我仍然得到 NT AUTHORITY\SYSTEM。按照您的建议,我在哪里可以检查是否使用了“NT AUTHORITY\IUSR”帐户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多