访问AD(active directory)属性

本文关键字:属性 directory active AD 访问 | 更新日期: 2023-09-27 18:19:48

我通过以下方法访问AD属性。它在我的本地VHD中运行良好(我是域/本地/企业管理员),但当我从域用户(只有本地管理员访问权限)访问时,它就不起作用了。

但同一域用户(仅具有本地管理员访问权限)使用ADExplorer(SysInternal)工具访问所有AD属性详细信息。

是因为这是非托管代码,并且可以访问Windows API,而在.Net中我需要域管理员或某些权限吗?

或者还有另一种方法——我在.Net中缺少这种方法,可以在没有额外域级别权限的情况下访问AD属性??

public void getCurrentUserADDetails(string UserName)
{
   string ladpQueryStr = "LDAP://sp.com";
   DirectoryEntry dirEntry = new DirectoryEntry(ladpQueryStr);
   DirectorySearcher srch = new DirectorySearcher(dirEntry);
   srch.Filter = "(cn=" + UserName.ToLowerInvariant().Trim() + ")";
   srch.PropertiesToLoad.Add("name");
   srch.PropertiesToLoad.Add("memberOf");
   srch.PropertiesToLoad.Add("prop123");
   SearchResult searcResult = srch.FindOne();
   if (searcResult != null)
   {
      ResultPropertyCollection propertiesCollection = searcResult.Properties;
      List<DisplayClass> grdDataList = new List<DisplayClass>();
      foreach (string strKey in propertiesCollection.PropertyNames)
      {
         DisplayClass dispC = new DisplayClass();
         dispC.pName = strKey;
         dispC.pValue = Convert.ToString(propertiesCollection[strKey][0]);
         grdDataList.Add(dispC);
      }
      dataGridView1.DataSource = grdDataList;
   }
}

这将在ASP.Net 中运行

提前感谢:)

访问AD(active directory)属性

我假设您使用的是集成身份验证-为了实现这一点,您必须设置帐户委派,除非您在域控制器上运行应用程序。这是一个相当棘手的过程,但谷歌中有大量的信息。

通过使用显式身份验证和更改搜索过滤器,我得到了结果。

DirectoryEntry dirEntry=新的DirectoryEntry(路径、用户名、密码、AuthenticationType);