Asp.net web api 验证Asp.net web api核心中的Active Directory中是否存在用户
如何检查Active Directory中是否存在用户。 我们正在将emailId作为用户名传递给方法参数,它是GET方法 我们已经编写了这个方法,但它不能正常工作Asp.net web api 验证Asp.net web api核心中的Active Directory中是否存在用户,asp.net-web-api,asp.net-core,active-directory,asp.net-core-2.0,Asp.net Web Api,Asp.net Core,Active Directory,Asp.net Core 2.0,如何检查Active Directory中是否存在用户。 我们正在将emailId作为用户名传递给方法参数,它是GET方法 我们已经编写了这个方法,但它不能正常工作 [HttpGet("GetADUsers")] public List<string> GetADUsers(string userName) { var domainUsers = new List<string>(); try { s
[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;
}
[HttpGet(“getaduser”)]
公共列表GetADUsers(字符串用户名)
{
var domainUsers=新列表();
尝试
{
字符串domainName=\u domainSettings.Value.domainName;
字符串domainUserName=\u domainSettings.Value.UserName;
字符串domainPassword=\u domainSettings.Value.Password;
PrincipalContext pc=新PrincipalContext(ContextType.Domain、domainName、domainUserName、domainPassword、ContextOptions.SimpleBind.ToString());
UserPrincipal principalUser=新的UserPrincipal(pc);
使用(var搜索=新PrincipalSearcher(principalUser))
{
foreach(search.FindAll()中的var user,其中(x=>x.DisplayName==userName))
{
if(user.DisplayName!=null)
{
domainUsers.Add(user.DisplayName);
}
}
}
}
捕获(例外情况除外)
{
例如Message.ToString();
}
返回域用户;
}
创建PrincipalContext
后,您可以调用UserPrincipal.FindByIdentity()
-如果找到用户,则返回UserPrincipal
-否则为空
[HttpGet("GetADUsers")]
public bool ADUserExists(string userName)
{
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 = UserPrincipal.FindByIdentity(pc, userName);
if (principalUser != null)
{
// gefunden ....
return true;
}
else
{
// nicht gefunden
return false;
}
}
您的错误是将
用户名
与显示名称
进行比较。您可能应该将其与SamAccountName
属性进行比较,后者是AD中的用户名。但是marc_s的答案可能会更快。谢谢Gabriel Luci的建议。谢谢您的解决方案