访问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 中运行
提前感谢:)
我假设您使用的是集成身份验证-为了实现这一点,您必须设置帐户委派,除非您在域控制器上运行应用程序。这是一个相当棘手的过程,但谷歌中有大量的信息。
通过使用显式身份验证和更改搜索过滤器,我得到了结果。
DirectoryEntry dirEntry=新的DirectoryEntry(路径、用户名、密码、AuthenticationType);