将 Windows 用户名传递给网站

pass Windows user name to website

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

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

也试过

Page.User.Identity.Name;

有时您需要尝试几种不同的方法来检索 Active Directory 信息。以下是其他帖子中出现的几种方式:

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

只需添加这些,调试并查看它们是否也在 returniis 用户名中。

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

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

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