Windows身份验证User.Identity.Name到电子邮件地址

时间:2013-11-08 08:25:29

标签: c# active-directory windows-authentication

我已经尝试使用How to obtain email address with window authentication,但问题仍然存在:

我知道如何询问John Smith的电子邮件地址,但我得到的身份验证名称就像INTRA \\ JohnSmith3或DEP21 \\ JohnSmith

如何将INTRA \\ JohnSmith3或DEP21 \\ JohnSmith映射到AD中正确的John Smith?

1 个答案:

答案 0 :(得分:1)

从Windows身份验证中获得的是SAM帐户名称。您需要在Active Directory中查找。

您可以为这样的用户查询Active Directory:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=JohnSmith3))

在代码中:

string filter = "(&(objectCategory=person)"
     + "(objectClass=user)"
     + "(sAMAccountName=" + samAccountName + "))";
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.Filter = filter;
SearchResult result = search.FindOne();
DirectoryEntry de = result.GetDirectoryEntry();