我能从WindowsPrincipal获取Active Directory属性吗?

7
我想获取当前已登录用户的员工ID。是否有一些 .Net 类可轻松获得,或者我需要进行某种LDAP查询?欢迎任何提示。
2个回答

7
更简单的方法是使用新的.NET 3.5 System.DirectoryServices.AccountManagement功能。请参阅MSDN文章《在.NET Framework 3.5中管理目录安全主体》以获取详细信息。
PrincipalContext ctx = new PrincipalContext(ContextType.Domain. "YOURDOMAIN");

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName);

if(user != null)
{
   string empID = user.EmployeeId;
}

新的强类型主体类使得与AD的工作变得轻而易举。

是的,那更简单。请注意它是UserPrincipal.EmployeeId而不是...ID。谢谢。 - Graeme
1
谢谢Marc,我正在寻找如何从Windows身份中获取用户主体。在这里我意识到,如果我有域,我可以这样做,而不需要对我的Windows身份对象进行任何操作。 - Veverke
1
有没有想法如何在ASP.NET Core中实现这个? - Patrick Szalapski

-1

使用了AD查询 - 非常简单:

DirectorySearcher ds = new DirectorySearcher();
ds.PropertiesToLoad.Add("employeeID");
ds.Filter = String.Format("(&(objectCategory=person)(sAMAccountName={0}))", loginName);

result = ds.FindOne();
if (result != null)
{
    personnelNumber = result.Properties["employeeID"][0].ToString();
}

结果来自哪里? "result = ds.FindOne();" - Thando Tee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接