Active Directory用户组成员身份GroupPrincipal

Mat*_*att 7 c# active-directory

我正在尝试使用GroupPrincipal(System.DirectoryServices.AccountManagement命名空间的一部分)来填充类型字符串列表,因此我可以检查用户是否是Active Directory组的成员.这是我到目前为止编写的编辑类:

public class ActiveDirectoryMembership
{
    private PrincipalContext context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);
    private List<string> GroupName {get;set;}

    public ActiveDirectoryMembership() 
    {
         //Code snipped - this part returns a list of users
         populateGroups();
    }

    private void populateGroups()
    {
        GroupPrincipal SearchGroup = GroupPrincipal.FindByIdentity(context, "Group Name");
        GroupName = new List<string>();
        foreach (UserPrincipal p in GroupName.GetMembers())
        {
           GroupName.add(p.SamAccountName);
        }
    }
Run Code Online (Sandbox Code Playgroud)

那么,我哪里错了?

提前致谢 :)

mar*_*c_s 1

我认为你的方法中有一个简单的拼写错误 - 你将组主体放入SearchGroup(检查NULL,顺便说一句!!),然后你抓住了成员GroupName

尝试这个:

private void populateGroups()
{
    GroupPrincipal SearchGroup = GroupPrincipal.FindByIdentity(context, "Group Name");

    if(SearchGroup != null)
    {
       GroupName = new List<string>();

       // call 'GetMembers' on 'SearchGroup' here!! 
       foreach (UserPrincipal p in SearchGroup.GetMembers())  
       {
          GroupName.add(p.SamAccountName);
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 完全忽略我 - 我的测试正在用我的头玩 - 我做了assert.isnull而不是assert.isnotnull - 现在一切都好了! (2认同)