所以我想在 Windows 2003 中使用 JNDI 创建一个带有 Active Directory 的用户帐户。我遵循以下示例: 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(无法执行)。真正奇怪的是,如果我以域管理员身份进入活动目录用户和计算机,我也无法设置密码。我可以更改它的唯一方法是,如果我选择重置密码选项,然后启用“用户下次登录时必须更改帐户”。设置后,我可以通过编程方式和 GUI 设置密码。
我还尝试在创建后的下一次登录时设置更改密码,但在我在代码中更改密码之前,但这也不起作用。它确实更改了框,但我仍然无法更改密码并收到 5003 错误。
有没有人有使用 JNDI 在 Windows 2003 上创建具有最短密码年龄的用户的经验?任何帮助将非常感激。