UserPrincipal.FindByIdentity с IdentityType.Guid не возвращает результатов

Я ищу пользователей в 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, но это ничего не меняет.

0 ответов

Другие вопросы по тегам