public GroupPrincipal GetWhitelistedGroupPrincipal(string group)
var whitelistedContextForGroup = new Dictionary<string, PrincipalContext>
{ Config.Groups.DomainUsers, contextUsers },
{ Config.Groups.ManagedGroups, contextUserReflector }
var whitelistedContexts = new List<PrincipalContext>
PrincipalContext context;
static GroupPrincipal FindGroupPrincipal()
if (GroupPrincipal.FindByIdentity(context, group) is GroupPrincipal groupPrincipal)
if (whitelistedContextForGroup.ContainsKey(group))
context = whitelistedContextForGroup[group];
return FindGroupPrincipal();
foreach (var c in whitelistedContexts)
return FindGroupPrincipal();
public static void Main()