Ändern Sie AD Passwort mit Java
Ich habe eine gute Verbindung zu AD. Ich kann mich authentifizieren und überprüfen Sie Fehlermeldungen von fehlgeschlagenen auths.
Das Problem, das ich habe, kommt von dem Versuch, das Kennwort zu ändern. Ich habe eine LDAPContext gegründet, an dieser Stelle (ja, es ist eine SSL-Verbindung). Das Problem kommt von nicht zu wissen, was der Wert mit in das "Benutzername" - parameter. Ich habe versucht, alle Variationen, die ich denken kann und am Ende immer einer der drei Fehler:
A) NO_OBJECT - ich nehme an, das bedeutet, es ist mit der Verbindung zu AD richtig, kann aber nicht finden was ich Suche.
B) DIR_ERROR - ich nehme an, das bedeutet, es können in einem AD richtig funktioniert, aber nicht weiß, was ich will, es zu tun, nachdem die.
C) irgendeine Art von ref-Fehler, der passiert nur wenn ich nicht qualifizieren, der DC, so dass ich denke, dass ist ziemlich viel gegeben.
Hier ist der code, den ich verwende:
public void changePassword(String username, String password) {
ModificationItem[] mods = new ModificationItem[1];
String newQuotedPassword = "\"" + password + "\"";
byte[] newUnicodePassword = newQuotedPassword.getBytes();
try {
newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("unicodePwd", newUnicodePassword));
try {
ldapContext.modifyAttributes(username, mods);
} catch (NamingException e) {
System.out.println("Error changing password for '" + username + "': " + e.getMessage());
e.printStackTrace();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Frühjahr hat ein LDAP-Modul, die sehr gut funktioniert. Ich Wette, es wird tun, was Sie brauchen.
Haben wir eine Referenz für die Java-her JNDI hier http://ldapwiki.willeke.com/wiki/Set%20Active%20Directory%20Password%20From%20Java
Können Sie nicht ändern das Passwort eines Benutzers nur durch ändern der Eigenschaft, dass speichert. Stattdessen müssen Sie eine spezielle LDAP-operation SetPassword. Ich konnte Sie nicht finden, eine Java-Referenz, aber ein C# und ein Perl ein.
Hier ist ein funktionierendes Beispiel:
Main.java:
MySSLSocketFactory.java: (Nutzung auf eigene Gefahr)