asp.net-web-api - 验证用户是否存在于 Asp.net web api 核心的 Active Directory 中
问题描述
如何检查用户是否存在于 Active Directory中。我们将 emailId 作为用户名传递给方法参数,它是 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;
}
解决方案
创建 后PrincipalContext
,您可以调用UserPrincipal.FindByIdentity()
- 如果找到用户,则返回UserPrincipal
- 否则为 null。
[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;
}
}
推荐阅读
- electron - 带有电子的持久触摸条
- go - 如何检查文件是否可以在go中执行?
- vue.js - Ubuntu 18.04 未找到命令“vue”
- javascript - 带有 JavaScript 条件验证的表单
- php - 使用 Laravel 和 Sparkpost 发送电子邮件时出现 403 错误
- javascript - How to display the contents of the array, changing the structure id dynamically?
- c++ - Cannot find directory in context of main.cpp (Allegro with CMake)
- javascript - Change focus to next input field on "Enter" key with VueJS & Quasar
- javascript - Using Select2 Ajax call with Ruby on Rails and ElasticSearch
- c# - Console.ReadLine() 不将字符串设置为用户输入