我有以下代码来检索当前的活动目录用户:
public List<DomainContext> GetADUsers(string term=null)
{
List<DomainContext> results = new List<DomainContext>();
string ADServerName = System.Web.Configuration.WebConfigurationManager.AppSettings["ADServerName"];
using (var context = new PrincipalContext(ContextType.Domain, ADServerName))
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
var searchResults = searcher.FindAll();
foreach (Principal p in searchResults)
{
if (term == null || p.SamAccountName.ToString().ToUpper().StartsWith(term.ToUpper()))
{
DomainContext dc = new DomainContext();
dc.DisplayName = p.DisplayName;
dc.UserPrincipalName = p.UserPrincipalName;
dc.Name = p.Name;
dc.SamAccountName = p.SamAccountName;
results.Add(dc);
}
}
}
return results;
}
我目前的情况如下:
我正在开发机器上工作,其中 ASP.NET MVC Web 应用程序和 Active Directory 都在同一台机器上。
我没有通过用户名和密码来获取 AD 用户。
因此,当我将包含上述代码的 ASP.NET MVC Web 应用程序移动到我的 UAT 服务器时,我有以下担忧:
- 在 UAT 服务器上,ASP.NET MVC Web 应用程序和 AD 将位于两台不同的机器上。
- 要从某台机器访问 AD,我可能需要向 AD 服务器发送用户名和密码。
如果出现以下情况,我的原始代码也会起作用:
- AD 和 ASP.NET MVC Web 应用程序在不同的机器上?
- 如果 AD 服务器需要同时传递用户名和密码?