Создать пользователя Active Directory: целью вызова было создано исключение. бросили на UserPrincipal

Когда я пытаюсь создать пользователя в активном каталоге, я получаю исключение:

(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) ошибка

Код:

UserPrincipal userPrincipal = new UserPrincipal(principalContext);
userPrincipal.SamAccountName = serviceAccount.SAMAccountName;
userPrincipal.PasswordNeverExpires = serviceAccount.PasswordNeverExpires;
userPrincipal.SetPassword(passwordOfAccount);
userPrincipal.Enabled = serviceAccount.Enabled;

// Creates the account
try
{
    userPrincipal.Save();
}
catch (Exception e)
{
    return false;
}
return true;

Я получаю ошибку в

userPrincipal.Save();

person saurav7044    schedule 29.07.2019    source источник
comment
PrincipalContext PrincipalContext = null; try { // PrincipalContext необходимо инициализировать с использованием учетных данных, предоставленных для среды QA. PrincipalContext = new PrincipalContext(ContextType.Domain, domain, environment, xyz, D[u.Aa39BK*t@j)_); } поймать (Исключение e) { вернуть ложь; }   -  person saurav7044    schedule 29.07.2019


Ответы (1)


E_ACCESSDENIED означает, что учетная запись, которую вы используете для этого, не имеет разрешений на то, что вы делаете.

Вы не показываете свой код, где вы создаете свой объект PrincipalContext, но если вы не дали ему имя пользователя и пароль, то он использует любые учетные данные, под которыми работает процесс, что звучит так, как будто это недостаточно хорошо.

Вам необходимо использовать один из PrincipalContext конструкторов, который позволяет указать имя пользователя и пароль. Например:

var principalContext = new PrincipalContext(
                            ContextType.Domain,
                            "example.com",
                            "ou=Users,dc=example,dc=com",
                            "username",
                            "password"
                       );

Где "example.com" — ваше доменное имя, ""ou=Users,dc=example,dc=com"" — подразделение, в котором вы хотите создать учетные записи, а "username" и "password" принадлежат учетной записи, имеющей разрешения на создание учетных записей пользователей в этом подразделении.

person Gabriel Luci    schedule 29.07.2019
comment
Здравствуйте, Габриэль Люси, я даю имя пользователя и пароль, и у него есть полное разрешение в Active Directory для создания пользователя. Он создает пользователя, а затем выдает ошибку. код выглядит следующим образом PrincipalContext PrincipalContext = null; try { // PrincipalContext необходимо инициализировать с использованием учетных данных, предоставленных для среды QA. PrincipalContext = new PrincipalContext(ContextType.Domain, domain, environment, xyz, D[u.Aa39BK*t@j)_); } - person saurav7044; 29.07.2019
comment
Я понимаю. В этом коде вы устанавливаете пароль, поэтому вам также нужны права на сброс пароля. Вы также устанавливаете атрибуты sAMAccountName и userAccountControl, поэтому убедитесь, что у учетной записи есть разрешение на изменение этих атрибутов. - person Gabriel Luci; 30.07.2019