【问题标题】:How to find current user group from Active Directory如何从 Active Directory 中查找当前用户组
【发布时间】:2015-09-26 15:32:15
【问题描述】:

如何从 Active Directory Server 中找到当前用户组

参考截图网址。 http://i.stack.imgur.com/v1dww.png

对于用户名“palani”,组是Administrators

如何从 Active Directory 服务器获取它

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:

    如果您使用的是 .NET 3.5 及更高版本,则应查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。在此处阅读所有相关信息:

    基本上,您可以定义域上下文并在 AD 中轻松找到用户和/或组:

    // set up domain context
    using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
    {
        // find currently logged in user
        UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "palani");
    
        if(user != null)
        {
             foreach(GroupPrincipal group in user.GetAuthorizationGroups().OfType<GroupPrincipal>())
             {
                Console.WriteLine("Group name: {0}", group.Name);
             }
        }
    }
    

    一个用户可以是任意数量的组的成员 - 对于给定的用户没有 - 只有他/她所属的组的列表。

    新的 S.DS.AM 让在 AD 中与用户和组一起玩变得非常容易!

    【讨论】:

    • 我收到以下错误,{System.DirectoryServices.AccountManagement.PrincipalOperationException:尝试检索授权组时,发生错误 (5)。在 System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) 在 System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) 在 System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) .AccountManagement.UserPrincipal.GetAuthorizationGroups() 在 LDAP.LdapAuthentication.GetGroups()}
    【解决方案2】:

    你可以试试这个:

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain.com",
                                      "CN=palani,OU=Department,DC=domain,DC=com",
                                                                 "administrator",
                                                                     "password");
            UserPrincipal usr = UserPrincipal.FindByIdentity(ctx,"palani");
            if(usr!=null){
                Console.WriteLine(Convert.ToString(usr.SamAccountName));
                PrincipalSearchResult<Principal> group = usr.GetGroups();
                foreach(Principal pr in group)
                    Console.WriteLine(pr.Name);
            }
            Console.Read();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多