Изменение свойства учетной записи пользователя AD с помощью UserPrincipal

Я пытаюсь изменить свойство учетной записи пользователя в Active Directory с помощью свойства UserPrincipal.

Я читал, что мы должны использовать специальную учетную запись, которая имеет права на запись в Active Directory, а не текущего пользователя для входа в систему. Итак, я создал специальный класс для олицетворения с помощью специальной учетной записи. Но у меня все еще есть

System.UnauthorizedAccessException: General access denied error

в user.Save(ctx); линия.

System.Security.Principal.WindowsImpersonationContext newUser = clsImpersonate.ImpersonateUser("ADUser", "ADPassword");

            if (newUser != null)
            {
                PrincipalContext ctx = blAD.GetAdminPrincipalContext();
                UserPrincipal user = blAD.GetUserPrincipal(this.SAMAccount);
                user.Enabled = false;
                user.Save(ctx);
                newUser.Undo();
            }

Как я могу выполнить это требование? Спасибо.


person TTCG    schedule 24.04.2012    source источник


Ответы (3)


Какие разрешения были делегированы вашему специальному пользователю? Он должен иметь возможность писать userAccountControl для рассматриваемых пользователей.

person Brian Desmond    schedule 24.04.2012

Я бы не стал выдавать себя за учетную запись в первую очередь! Получите доступ, сначала передав значения через объявление.

Для реальной проблемы посмотрите на ошибку:

  1. Получите файл PrincipalContect.
  2. Получите принципала пользователя.
  3. Делай то, что хочешь.
  4. Сохраните это, почему вы используете отмену? Удалить Отменить().
person user2855205    schedule 07.10.2013

Чтобы получить доступ к Principle от имени другого пользователя, определите PrincipalContext с учетными данными пользователя и используйте этот PrincipalContext при получении UserPrincipal.

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain.tld", "ADUser", "ADPassword");
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, this.SAMAccount);
    if (user != null) 
    {
        user.Enabled = false;
        user.Save();
    }

Если вы по-прежнему получаете исключение UnauthorizedAccess Exception, скорее всего, указанная вами учетная запись не имеет доступа для записи атрибута userAccountControl в объекте пользователя в Active Directory/LDS.

person Jason Fare    schedule 26.09.2014
comment
Как узнать, если the account you are specifying does not have access to write the userAccountControl attribute on the user object in Active Directory/LDS. ? - person Kiquenet; 17.12.2018