gpt4 book ai didi

c# - 通过 employeeID 获取 UserPrincipal

转载 作者:太空狗 更新时间:2023-10-29 22:19:00 25 4
gpt4 key购买 nike

我已经实现了 System.DirectoryServices.AccountManagement 以在我的 Web 应用程序中通过给定用户名的身份查找用户 (UserPrincipal) 进行身份验证。但是,在某些情况下,我需要只给定 employeeID 来获取 AD 帐户。在 AccountManagement 中给定 employeeID 是否有好的方法来获取 UserPrincipal(或者甚至只是 sAMAccountName)?

我目前正在通过用户名获取用户:

PrincipalContext adAuth = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);

//get user
UserPrincipal usr = UserPrincipal.FindByIdentity(adAuth, username);

我一直在搜索,但似乎找不到答案来确认这是否可以完成。如果我不能用 AccountManagement 做到这一点,那么在给定 employeeID 的情况下获取 sAMAccountName 的最佳方法是什么?

最佳答案

您不需要离开 System.DirectoryServices.AccountManagement 命名空间。

UserPrincipal searchTemplate = new UserPrincipal(adAuth);
searchTemplate.EmployeeID = "employeeID";
PrincipalSearcher ps = new PrincipalSearcher(searchTemplate);

UserPrincipal user = (UserPrincipal)ps.FindOne();

在此示例中,如果未找到用户,则用户对象将为空。如果您想查找 UserPrinicipal 对象的集合,您可以对 PrincipalSearcher (ps) 对象使用 FindAll 方法。

另请注意,FindOne 方法返回一个 Principal 对象,但我们知道它实际上是一个 UserPrincipal,应该这样处理(转换),因为 UserPrincipal 是搜索过滤器的一部分。

关于c# - 通过 employeeID 获取 UserPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916328/

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