gpt4 book ai didi

c# - 使用 PrincipalContext 和 PrincipalSearcher 从单独的服务器访问 Active Directory 用户

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:29 25 4
gpt4 key购买 nike

我有以下代码来检索当前的事件目录用户:

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;
}

我目前的情况是这样的:

  1. 我在开发机器上工作,ASP.NET MVC Web 应用程序和 Active Directory 在同一台机器上。

  2. 我没有传递用户名和密码来获取 AD 用户。

因此,当我将包含上述代码的 ASP.NET MVC Web 应用程序移动到我的 UAT 服务器时,我有以下问题:

  1. 在 UAT 服务器上,ASP.NET MVC 网络应用程序和 AD 将位于两台不同的机器上。
  2. 要从某台机器访问 AD,我可能需要将用户名和密码发送到 AD 服务器。

如果满足以下条件,我的原始代码也能正常工作:

  1. AD 和 ASP.NET MVC 网络应用程序在不同的机器上?
  2. 如果 AD 服务器需要传递用户名和密码?

最佳答案

有两种可能。

要么您将用户名/密码传递给 PricipalContext,要么应用程序池的标识具有足够的权限来查询 AD,那么您不必提供用户名/密码。

如果应用服务器在 AD 中,后者非常方便,因为代码和/或配置文件中没有用户名/密码。另一方面,如果应用程序服务器在 AD 中,则以显式方式传递用户名/密码是唯一可行的方法。

关于c# - 使用 PrincipalContext 和 PrincipalSearcher 从单独的服务器访问 Active Directory 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20429332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com