【问题标题】:WindowsIdentity always returns IIS userWindowsIdentity 总是返回 IIS 用户
【发布时间】:2017-12-19 05:46:48
【问题描述】:

我有一个 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 用户?

【问题讨论】:

    标签: asp.net iis windows-authentication


    【解决方案1】:

    打开 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>
    

    【讨论】:

      【解决方案2】:

      在 ASP.NET Web 窗体中,您应该访问 Page.User,而在 ASP.NET MVC 或 Web API 中,您应该相应地调用 Controller.User 或 ApiController.User。这个用户身份来自请求,被设置为线程身份。

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

      【讨论】:

        猜你喜欢
        • 2017-06-02
        • 1970-01-01
        • 2013-05-19
        • 2013-01-27
        • 2022-11-25
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 2014-04-03
        相关资源
        最近更新 更多