访问AD(活动目录)属性

时间:2012-01-09 23:41:30

标签: c# asp.net .net .net-3.5 active-directory

我通过以下方法访问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中运行

提前感谢:)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

DirectoryEntry dirEntry = new DirectoryEntry(path,username,password,AuthenticationType);