在Web App中使用User.Identity.Name检索AD用户

时间:2018-10-18 09:02:27

标签: c# asp.net .net iis web-applications

我正在尝试根据以下代码提供的名称来检索Intranet网络应用的AD用户:

var userName = User.Identity.Name.Split('\\')[1];

哪个将返回DOMAIN \\ USER,并将其切成薄片,这样我就只能抓取'USER'。

然后将其传递给此方法:

public bool DoesUserExist(string userName)
{
    using (var domainContext = new PrincipalContext(ContextType.Domain, Domain))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            return foundUser != null;
        }
    }
}

在我的开发机器上或在实时发布的机器上运行它,总是返回false。

但是,如果我这样做:

var domainUser = UserPrincipal.Current;

它正确检索用户(在本例中为我本人),并且当我比较SamAccountName和我在方法中通过的名称时,它们是相同的。使用此功能的问题是,当网站实时发布时,它只会获取IIS应用程序池登录名,而User.Identity.Name则会获取该站点上用户的帐户。

我尝试过传递未修饰的名称,但该方法也不起作用。

我的想法不多了;有人知道我在这里错过了什么吗,或者有什么建议可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的Domain不正确吗?

您刚刚尝试过

using (var principalContext = new PrincipalContext(ContextType.Domain))

这应该连接到默认域

相关问题