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

本文关键字:登录 windows 返回 NETWORK SERVICES 用户 获取 | 更新日期: 2023-09-27 18:01:12

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

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

这是我的网络配置:

<?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个返回为空或带有网络详细信息。有什么解决方案吗??

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

如果整个网站都需要Windows身份验证,则应确保禁用匿名身份验证。为此:

  1. 打开Internet信息服务(IIS(管理器
  2. 选择您的web应用程序并打开身份验证功能
  3. 请确保禁用"匿名身份验证"并启用"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(则会显示登录提示。