将 Windows 用户名传递到网站

本文关键字:网站 Windows 用户 | 更新日期: 2023-09-27 18:33:59

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

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

也试过

Page.User.Identity.Name;

将 Windows 用户名传递到网站

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

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

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

这里有两个不同的 Windows 用户 - 第一个是应用程序用户,第二个是运行 ASP.NET 应用程序(从 IIS 角度看的应用程序池)的用户(或 Windows 帐户)。WindowsIdentity.GetCurrent 通常会返回此引用。

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

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