【问题标题】:Get a user's group memberships from Active Directory从 Active Directory 获取用户的组成员身份
【发布时间】:2009-12-29 10:53:38
【问题描述】:

如何从 AD 获取用户的组成员资格,最好使用与获取用户的 Department 属性相同的模式,如下所示?我找到了几个示例,但是所有示例技术的交叉集都非常小,并且缺乏此部门查询的紧密性和简单性:

        var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost";
        var remoteRoot = new DirectoryEntry(GetRootPath(adServer));
        var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName));

        searcher.PropertiesToLoad.Add("Department");
        SearchResult result = null;
        result = searcher.FindOne();

【问题讨论】:

    标签: .net windows active-directory


    【解决方案1】:

    您使用的是 .NET 3.5 吗?如果是这样,那就很容易了:

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
    
    string userName = "yourUser";
    
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName);
    
    PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups();
    

    找到您的用户,然后在您的用户主体上调用.GetAuthorizationGroups() - 这将返回用户所属的所有组,包括他的主要组和任何嵌套组成员身份。

    查看MSDN article,了解 .NET 3.5 在处理 AD 方面的更多新优势。

    在 .NET 2.0 中,事情变得更加混乱......

    【讨论】:

    • 谢谢。这成功了一半,但是当我调用 GetAuthorizationGroups() 时出现错误“无法访问域信息”(类似的)
    • 您在构建主体上下文时是否指定了您的 NetBIOS 域名?例如。 “YOURDOMAIN”,而不是“yourcompany.com”?
    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多