Hallo @all,
hänge zurzeit an einer Funktion bei meinem Programm zum Verwalten der Benutzerkonten einer AD auf einem Win 2008 R2 Server. Arbeiten tue ich mit Eclipse Kepler!
Mein Code funktioniert, wenn ich erstmals bei einem User etwas verändere aber beim 2. mal findet er den User nicht. Das Problem ist, dass wenn der Name verändert wird, in der AD der Anzeigename sich nicht ändert bzw. der DN-String. Es kommt die Fehlermeldung:
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310020A, problem 2001 (NO_OBJECT), data 0, best match of: 'OU=Benutzer, DC=***']; remaining name 'cn= Test Account, OU=Benutzer,DC=***'......
Hier mal mein Code:
ctx und env wurden schon vorher deklariert!
ctx.rename() war mein letzer Versuch die DN zu aktualisieren hat aber leider auch nicht funktioniert.
oldUser.getName() --> Name bildet sich aus Vorname und Nachname also .getFirstName() und .getSubName()
Vielleicht kann mir ja hier jemand helfen.. Habe im Internet leider bisher noch nichts hilfreiches gefunden. Den DN-String kann man meines Wissens leider nur mit dem CN zusammen bauen und nicht mit der UID, zumindestens hat es bei mir nicht funktioniert. Und den CN kann ich leider auch nicht einfach editieren.
Mfg
hänge zurzeit an einer Funktion bei meinem Programm zum Verwalten der Benutzerkonten einer AD auf einem Win 2008 R2 Server. Arbeiten tue ich mit Eclipse Kepler!
Mein Code funktioniert, wenn ich erstmals bei einem User etwas verändere aber beim 2. mal findet er den User nicht. Das Problem ist, dass wenn der Name verändert wird, in der AD der Anzeigename sich nicht ändert bzw. der DN-String. Es kommt die Fehlermeldung:
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310020A, problem 2001 (NO_OBJECT), data 0, best match of: 'OU=Benutzer, DC=***']; remaining name 'cn= Test Account, OU=Benutzer,DC=***'......
Hier mal mein Code:
ctx und env wurden schon vorher deklariert!
ctx.rename() war mein letzer Versuch die DN zu aktualisieren hat aber leider auch nicht funktioniert.
oldUser.getName() --> Name bildet sich aus Vorname und Nachname also .getFirstName() und .getSubName()
Java:
public void editUser(Userbean oldUser, Userbean newUser) {
try{
if(oldUser == null || newUser == null) return;
if(isHostReachable()){
String oldUserDN = "CN=" + oldUser.getName() + ",OU=Benutzer, DC=***";
String newUserDN = "CN=" + newUser.getName() + ",OU=Benutzer, DC=***";
ModificationItem[] mods = new ModificationItem[3];
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("samAccountName", newUser.getLoginName()));
mods[1] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("givenName", newUser.getFirstName()));
mods[2] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("SN", newUser.getSubName()));
ctx = new InitinalLdapContext(env, null);
ctx.modifyAttributes(oldUserDN, mods);
ctx.rename(oldUserDN, newUserDN);
} catch (NamingException e){
e.printStackTrace();
}
}
Vielleicht kann mir ja hier jemand helfen.. Habe im Internet leider bisher noch nichts hilfreiches gefunden. Den DN-String kann man meines Wissens leider nur mit dem CN zusammen bauen und nicht mit der UID, zumindestens hat es bei mir nicht funktioniert. Und den CN kann ich leider auch nicht einfach editieren.
Mfg