Создание учетной записи пользователя в AD с JNDI и минимальным сроком действия пароля - PullRequest
3 голосов
/ 17 сентября 2010

Итак, я хочу создать учетную запись пользователя в Windows 2003 с Active Directory, использующей JNDI.Я следую следующему примеру: http://forums.sun.com/thread.jspa?threadID=582103 (первый пост).Следующий код выдает ошибку LDAP, я полагаю, из-за проблемы курицы и яйца, связанной с созданием пользователя и установкой пароля, который ограничен минимальным сроком действия пароля 1 день.

//Replace the "unicdodePwd" attribute with a new value
//Password must be both Unicode and a quoted string
String newQuotedPassword = "\"Password2000\"";
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");

mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("unicodePwd", newUnicodePassword));
mods[1] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_PASSWORD_EXPIRED)));

// Perform the update
ctx.modifyAttributes(userName, mods);
System.out.println("Set password & updated userccountControl");

Я получаюКод ошибки Ldap: 53 проблема 5003 (не удается выполнить), когда он пытается установить пароль, который, я считаю, является минимальным сроком действия пароля.Что действительно странно, так это то, что если я захожу в пользователи и компьютеры активного каталога в качестве администратора домена, я также не могу установить пароль.Единственный способ заставить его изменить это, если я выберу опцию сброса пароля, а затем включу «пользователь должен изменить учетную запись при следующем входе в систему».После этого я могу установить пароль как программно, так и через графический интерфейс.

Я также пытался установить пароль для изменения при следующем входе в систему после создания, но до того, как я изменил пароль в своем коде, но это тоже не сработало.Это изменило поле, но я все еще не смог сменить пароль и получил ошибку 5003.

Кто-нибудь имел опыт использования JNDI для создания пользователей с минимальным сроком действия пароля в Windows 2003?Любая помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Я использовал Java несколько месяцев назад для администрирования сервера AD.

Он работает хорошо, но есть одна важная вещь: пароль - это защищенный атрибут в AD:

  • он никогда не может быть прочитан протоколом LDAP
  • он может быть установлен / обновлен только с подключением, защищенным SSH.

Итак,в вашем Java-коде вы должны получить доступ к AD с адресом «https: // ...» и указать протокол SSH в атрибутах соединения JNDI.Процедура объясняется здесь: http://java.sun.com/products/jndi/tutorial/ldap/security/ssl.html

// Specify SSL
env.put(Context.SECURITY_PROTOCOL, "ssl");
0 голосов
/ 22 октября 2016

вам необходимо использовать SSL-соединение для изменения значения атрибута unicodePwd

см. Эту ссылку:

https://msdn.microsoft.com/en-us/library/cc223248.aspx

Серверы операционной системы Windows 2000 требуют, чтобы клиент имел128-битное (или лучше) SSL / TLS-зашифрованное соединение с DC для изменения этого атрибута.В операционной системе Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 и Windows Server 2016 контроллер домена также разрешает изменение атрибута unicodePwd всоединение защищено 128-битным (или лучше) шифрованием на уровне SASL, а не SSL / TLS.

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