我有一个.NET站点,用于评估用户域帐户并从Active Directory中获取一些详细信息
通过Visual Studio在本地运行时这很好,但在部署时,启用了Windows身份验证(未启用其他身份验证类型),我似乎只能获取运行应用程序池的用户的名称。
是否有特定方法来获取实际登录用户而不是应用程序池用户?
目前获取这样的用户名:
string _user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Remove(0, 8);
还试过
Page.User.Identity.Name;
答案 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" />