我正在使用Windows身份验证的C#和ASP.Net应用程序上工作。

即在Web.config中:

<system.web>
    <authentication mode="Windows" />
</system.web>

我想从Active Directory中获取当前用户的详细信息(全名,电子邮件地址等)。

我可以使用以下方法获取Windows 2000之前的用户登录名(例如:SOMEDOMAIN\someuser)
string username = HttpContext.Current.Request.ServerVariables["AUTH_USER"];

我已经使用用户的当前登录名(而不是Windows 2000之前的用户登录名)为用户制定了LDAP查询:
DirectorySearcher adSearch = new DirectorySearcher(
        "([email protected])");
SearchResult adSearchResult = adSearch.FindOne();

但是,我不知道如何使用W2K之前的登录名搜索AD来搜索用户,或者以'[email protected]'格式获取其登录名。

有任何想法吗?

最佳答案

“Windows 2000以前”的名称,即DOMAIN\SomeBodySomebody部分称为sAMAccountName。

因此,请尝试:

using(DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainController"))
{
   using(DirectorySearcher adSearch = new DirectorySearcher(de))
   {
     adSearch.Filter = "(sAMAccountName=someuser)";
     SearchResult adSearchResult = adSearch.FindOne();
   }
}

[email protected]是UserPrincipalName,但不是必填字段。

07-25 23:33