Получение групп пользователей в #39;s в Active Directory

У меня возникла проблема с интеграцией моей веб-службы ASP.NET с настройкой Active Directory и ее использованием для аутентификации пользователей и проверки групп AD, в которых они являются членами и если у них есть разрешения на использование моего пользовательского приложения.

У моего пользовательского приложения есть собственные разрешения, и администраторы настраивают группы Active Directory, которым разрешено использовать это пользовательское приложение.

Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь из другого доверенного леса AD с полным двухсторонним доверием пытается войти в систему, я не могу получить список его групп с сервера AD, с которым общаются мои веб-службы ASP.NET. с участием. Веб-служба ASP.NET имеет доступ только к серверу AD (AD Main ), а не к доверенному контроллеру AD (AD Secondary ).

Пользователь является членом (вторичного )домена AD, и я могу аутентифицировать этого пользователя в домене (AD Main ), но не могу получить список групп из (Основной )домен AD, когда пользователь находится в (вторичном домене AD ).

Я пробовал этот код.

StringCollection groupids = new StringCollection();
try
{
    DirectoryLibrary dirLib = new DirectoryLibrary();
    DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + domain,username, password);   
    if (directoryEntry != null)
    {
        //Enum the properties so we can see what is in them
        foreach (string propname in directoryEntry.Properties.PropertyNames)
        {
            Debug.WriteLine(propname);
        }

        object obGroups = directoryEntry.Invoke("Groups");
        foreach (object ob in (IEnumerable)obGroups)
        {
        // Create object for each group.
            DirectoryEntry obGpEntry = new DirectoryEntry(ob);
            groupids.Add(obGpEntry.NativeGuid);
        }
    }
}
catch (DirectoryServicesCOMException ex) { throw ex; }

Я попытался перейти от объекта DirectoryEntry к чему-то вроде этого.

List<GroupPrincipal> result = new List<GroupPrincipal>();
StringCollection groupids = new StringCollection();

PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, domain, userName, password);

// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);

// if found - grab its groups
if (user != null)
{
    PrincipalSearchResult<Principal> groups = user.GetGroups();

    // iterate over all groups
    foreach (Principal p in groups)
    {
        // make sure to add only group principals
        if (p is GroupPrincipal)
        {
            groupids.Add(p.DisplayName);
        }
    }

}

Но я не получаю пользователя и не могу получить список групп для этого пользователя в другом домене. Любая помощь будет оценена по достоинству.

6
задан Terry Gardner 10 April 2012 в 09:12
поделиться