将Windows用户名传递给网站

时间:2016-02-09 20:40:30

标签: c# iis-7 windows-authentication application-pool

我有一个.NET站点,用于评估用户域帐户并从Active Directory中获取一些详细信息 通过Visual Studio在本地运行时这很好,但在部署时,启用了Windows身份验证(未启用其他身份验证类型),我似乎只能获取运行应用程序池的用户的名称。
是否有特定方法来获取实际登录用户而不是应用程序池用户? 目前获取这样的用户名:

string _user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Remove(0, 8);

还试过

Page.User.Identity.Name;

1 个答案:

答案 0 :(得分:1)

有时您需要尝试一些不同的方法来检索Active Directory信息。以下是其他帖子中显示的一些方法:

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string userName = Environment.UserName;
string userName = HttpContext.Current.User.Identity

只需添加这些,调试并查看他们是否也返回了iis用户名。

这里有两个不同的Windows用户 - 第一个是您的应用程序用户,第二个是用户(或Windows帐户),您的ASP.NET应用程序(来自IIS透视图的应用程序池)正在其中运行。 WindowsIdentity.GetCurrent通常会返回此引用。

要获取使用该应用程序的实际Windows用户,您必须强制执行身份验证。为此,您可以在IIS中为所述网站启用集成身份验证(Windows身份验证)。还要修改ASP.NET配置以使用Windows身份验证。现在您可以使用HttpContext.Current.User.Identity来获取实际用户。

<authorization>
  <deny users="?" />
  <allow users="*" />
</authorization>
<authentication mode="Windows" />