Asp.net 使用PrincipalContext的限制&;DomainContext,用于检索Active directory用户
我在asp.net mvc web应用程序模型类中添加了以下代码,以检索当前的广告用户:-Asp.net 使用PrincipalContext的限制&;DomainContext,用于检索Active directory用户,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我在asp.net mvc web应用程序模型类中添加了以下代码,以检索当前的广告用户:- public List<DomainContext> GetADUsers(string term=null) { List<DomainContext> results = new List<DomainContext>(); string ADServerName = System.Web.Config
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;
}
公共列表GetADUsers(字符串项=null)
{
列表结果=新列表();
字符串ADServerName=System.Web.Configuration.WebConfigurationManager.AppSettings[“ADServerName”];
使用(var context=new PrincipalContext(ContextType.Domain,ADServerName))
使用(var searcher=newprincipalsearcher(newuserprincipal(context)))
{
var searchResults=searcher.FindAll();
foreach(搜索结果中的负责人p)
{
if(term==null | | p.SamAccountName.ToString().ToUpper().StartWith(term.ToUpper()))
{
DomainContext dc=新的DomainContext();
dc.DisplayName=p.DisplayName;
dc.UserPrincipalName=p.UserPrincipalName;
dc.Name=p.Name;
dc.SamAccountName=p.SamAccountName;
dc.differentiedName=p.differentiedName;
结果:添加(dc);
}
}
}
返回结果;
}
我现在在开发机器上,AD与asp.net mvc web应用程序运行在同一台机器上。无需提供用户名或密码即可访问广告。但关于在生产服务器上使用上述方法,我有以下问题:-
关于我想您是在问,如果web服务器不属于Active Directory域,是否可以使用相同的代码。确实有用户名和密码重载,以允许使用凭据进行连接,而不是依赖具有足够权限从目录读取的计算机
至于权限,请授予尽可能少的权限。我会让您的系统管理员参与创建一个帐户。您可能可以使用Windows Server 2008中引入的服务帐户来进行身份验证。谢谢您的回复,但我应该在AD计算机或承载MVc web应用程序的计算机上创建服务帐户的位置?@johnG您需要在Active Directory中创建服务帐户,然后将该用户名和密码提供给
PrincipalContext
。