【发布时间】:2019-04-28 02:43:56
【问题描述】:
我如何检查用户是否存在于 Active Directory 中。 我们将 emailId 作为 userName 传递给方法 parameter,它是 GET 方法。
我们已经编写了这个方法,但是它不能正常工作。
[HttpGet("GetADUsers")]
public List<string> GetADUsers(string userName)
{
var domainUsers = new List<string>();
try
{
string domainName = _domainSettings.Value.DomainName;
string domainUserName = _domainSettings.Value.UserName;
string domainPassword = _domainSettings.Value.Password;
PrincipalContext pc = new PrincipalContext(ContextType.Domain, domainName, domainUserName, domainPassword, ContextOptions.SimpleBind.ToString());
UserPrincipal principalUser = new UserPrincipal(pc);
using (var search = new PrincipalSearcher(principalUser))
{
foreach (var user in search.FindAll().Where(x => x.DisplayName == userName))
{
if (user.DisplayName != null)
{
domainUsers.Add(user.DisplayName);
}
}
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
return domainUsers;
}
【问题讨论】:
-
您的错误是将
userName与DisplayName进行比较。您可能应该将其与SamAccountName属性进行比较,后者是 AD 中的用户名。但无论如何,marc_s 的答案可能是更快的搜索。 -
感谢 Gabriel Luci 的建议。
标签: asp.net-web-api asp.net-core active-directory asp.net-core-2.0