我在我的 asp.net mvc web 应用程序模型类中添加了以下代码,以检索当前的 AD 用户:-
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 ;
dc.DistinguishedName = p.DistinguishedName;
results.Add(dc);
}
}
}
return results;
}
我现在在开发机器上,其中 AD 与 asp.net mvc Web 应用程序运行在同一台机器上。并且无需提供用户名或密码即可访问 AD。但是我对在生产服务器上使用上述方法有以下疑问:-
如果 AD 和 asp.net mvc(部署在 IIS 上)不在同一台机器上,相同的方法是否会很好地工作?
我能否提供用户名和密码来访问活动目录?
为了能够允许 Domaincontext 类访问远程服务器上的 AD,我应该达到哪些一般要求?
感谢我提前提供任何帮助。问候