UserPrincipal.FindByIdentity с IdentityType.Guid не возвращает результатов - PullRequest
0 голосов
/ 29 октября 2018

Я ищу пользователей в Active Directory, используя System.DirectoryServices.AccountManagement.

Вот простой пример

using System;
using System.DirectoryServices.AccountManagement;

public static class DomainHelpers
{
    public string GetDistinguishedName(string domain, string guid)
    {
        var context = new PrincipalContext(ContextType.Domain, domain);
        var userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.Guid, guid);

        return userPrincipal.DistinguishedName;
    }
}

UserPrincipal всегда нулевой. Если я изменяю IdentityType.Guid на IdentityType.SamAccountName и выполняю поиск по имени samaccountname, это работает просто отлично. Если я возьму свойство guid этого объекта userPrincipal, которое я получил при поиске samAccountName, я снова не получу ответ.

Есть идеи, что мне нужно сделать, чтобы получить результаты с помощью руководства? У меня сложилось четкое впечатление, что пару лет назад, когда я писал этот код, он работал нормально. Но тогда у меня была Windows 2008 R2 в качестве контроллеров домена, теперь у меня Windows 2016.

Если я получу доступ к DirectoryEntry напрямую, то с помощью

using (DirectoryEntry entry = new DirectoryEntry($"LDAP://{DomainName}/<GUID={objectGuid}>"))

Вещи работают как положено. Так что это проблема, присущая UserPrincipal.FindIdentity. Я также попытался предоставить NativeGuid для FindByIdentity, но это немного не меняет ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...