获取用户的 windows 登录返回 NETWORK SERVICES

Posted

技术标签:

【中文标题】获取用户的 windows 登录返回 NETWORK SERVICES【英文标题】:Get user's windows login returns NETWORK SERVICES 【发布时间】:2014-05-01 11:54:09 【问题描述】:

我正在尝试从服务器获取用户的 Windows 登录信息,并且我尝试的所有方法都返回了网络的详细信息。

我确实将<identity impersonate="true"> 放在了我的 web.config 中,但没有任何帮助。

这是我的网络配置:

<?xml version="1.0"?>
<configuration>
<appSettings>
 <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>
<system.web>
<authentication mode="Windows"/>
<identity impersonate="true"/>
<compilation targetFramework="4.5" debug="true"/>
<httpRuntime targetFramework="4.5"/>
<sessionState timeout="20"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>

这是我的 C# 调用:

string id1 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string id2 = Page.User.Identity.Name;
string id3 = Request.LogonUserIdentity.Name;

所有 3 个返回为空或包含网络详细信息。有什么解决办法??

【问题讨论】:

您想要哪个用户 - 应用程序的最终用户(登录网站的用户),还是应用程序在服务器上运行的用户?这些是完全不同的用户 登录应用程序的用户,最终用户。感谢您的区别。 这取决于您如何处理登录过程。能发下相关代码吗? 我没有处理任何登录过程,我只是想按上述方式获取 Windows 登录名。 知道怎么做吗? 【参考方案1】:

如果您的整个网站都需要 Windows 身份验证,则应确保禁用匿名身份验证。这样做:

    打开 Internet 信息服务 (IIS) 管理器。 选择您的 Web 应用程序并打开身份验证功能。 确保禁用“匿名身份验证”并启用“Windows 身份验证”。

一旦禁用匿名身份验证,id2id3 的代码将包含 Windows 登录信息。您的id1 代码将报告应用程序池的身份。

如果您的网站只有一部分需要身份验证而其他部分不需要,那么您的 web.config 应该定义授权规则(并且匿名身份验证应该保持启用)。例如,您可以默认拒绝匿名用户访问所有页面,但特别允许匿名访问 Default.aspx。

<configuration>

  <system.web>
    ...
    <authorization>
      <deny users="?"/>
    </authorization>
     ...
 </system.web>

  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

</configuration>

Windows 身份验证不需要您的应用程序实现登录过程。它将向浏览器发出身份验证质询。某些浏览器(例如 IE)会自动提供 Windows 凭据,而其他浏览器(例如 Firefox)会显示登录提示。

【讨论】:

以上是关于获取用户的 windows 登录返回 NETWORK SERVICES的主要内容,如果未能解决你的问题,请参考以下文章

获取当前登录的windows用户

如何获取当前Windows登录用户全名而不是域名[重复]

在VC中获取Windows XP,Windows 7当前登录用户名[关闭]

一些获取当前登录Windows系统用户信息的命令

一些获取当前登录Windows系统用户信息的命令

SQL Server 返回错误“用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败。”在 Windows 应用程序中