【问题标题】:Can I get Active Directory attributes from the WindowsPrincipal?我可以从 WindowsPrincipal 获取 Active Directory 属性吗?
【发布时间】:2010-05-11 08:05:11
【问题描述】:

我想获取当前登录用户的 Employee-ID。这在某些 .Net 类中很容易获得还是我需要进行某种 LDAP 查询?

欢迎任何提示

【问题讨论】:

    标签: c# .net active-directory


    【解决方案1】:

    更简单 - 使用新的 .NET 3.5 System.DirectoryServices.AccountManagement 功能。

    有关详细信息,请参阅 MSDN 文章 Managing Directory Security Principals in the .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 谢谢
    • 谢谢 Marc,我正在搜索如何从 Windows 标识中获取用户主体。在这里,我意识到,如果我有域,我可以做到这一点,与我的 Windows 标识对象无关。
    • 知道如何在 ASP.NET Core 中执行此操作吗?
    【解决方案2】:

    使用 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();
    }
    

    【讨论】:

    • 结果从何而来? “结果 = ds.FindOne();”
    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多