Anonymous
Изменить пароль Active Directory через Spring LDAP
Сообщение
Anonymous » 09 окт 2024, 12:05
У меня есть приложение Java, и я хочу, чтобы каждый пользователь имел возможность изменить свой пароль через приложение.
Это мой код:
Код: Выделить всё
public void changePassword()
{
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl("LDAPS://X.Y.Z.T/");
contextSource.setBase("DC=example,DC=com");
contextSource.setUserDn("username@example.com");
contextSource.setPassword("oldpass");
contextSource.afterPropertiesSet();
LdapTemplate ldapTemplate = new LdapTemplate(contextSource);
byte[] li_byOldpass = encodePassword("oldpass");
byte[] li_byNewpass = encodePassword("newpass");
Attribute oldattr = new BasicAttribute("unicodePwd", li_byOldpass);
Attribute newattr = new BasicAttribute("unicodePwd", li_byNewpass);
ModificationItem olditem = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, oldattr);
ModificationItem newitem = new ModificationItem(DirContext.ADD_ATTRIBUTE, newattr);
ModificationItem repitem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, newattr);
ModificationItem[] mods = new ModificationItem[2];
mods[0] = olditem;
mods[1] = newitem;
try
{
ldapTemplate.modifyAttributes("CN=Name Surname,OU=Office,DC=example,DC=com", new ModificationItem[] { repitem });
}catch(Exception e)
{
System.out.println("Error in changing password on Active Directory: " + e.getMessage() );
}
}
К сожалению, это не работает, и я получаю вот такую ошибку:
[LDAP: код ошибки 32 — 0000208D: NameErr: DSID-0310020A, проблема 2001 (NO_OBJECT), данные 0, лучшее соответствие: «DC=example,DC=com»];
Будем благодарны за любую помощь
Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/310 ... pring-ldap
1728464710
Anonymous
У меня есть приложение Java, и я хочу, чтобы каждый пользователь имел возможность изменить свой пароль через приложение. Это мой код: [code]public void changePassword() { LdapContextSource contextSource = new LdapContextSource(); contextSource.setUrl("LDAPS://X.Y.Z.T/"); contextSource.setBase("DC=example,DC=com"); contextSource.setUserDn("username@example.com"); contextSource.setPassword("oldpass"); contextSource.afterPropertiesSet(); LdapTemplate ldapTemplate = new LdapTemplate(contextSource); byte[] li_byOldpass = encodePassword("oldpass"); byte[] li_byNewpass = encodePassword("newpass"); Attribute oldattr = new BasicAttribute("unicodePwd", li_byOldpass); Attribute newattr = new BasicAttribute("unicodePwd", li_byNewpass); ModificationItem olditem = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, oldattr); ModificationItem newitem = new ModificationItem(DirContext.ADD_ATTRIBUTE, newattr); ModificationItem repitem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, newattr); ModificationItem[] mods = new ModificationItem[2]; mods[0] = olditem; mods[1] = newitem; try { ldapTemplate.modifyAttributes("CN=Name Surname,OU=Office,DC=example,DC=com", new ModificationItem[] { repitem }); }catch(Exception e) { System.out.println("Error in changing password on Active Directory: " + e.getMessage() ); } } [/code] К сожалению, это не работает, и я получаю вот такую ошибку: [b][LDAP: код ошибки 32 — 0000208D: NameErr: DSID-0310020A, проблема 2001 (NO_OBJECT), данные 0, лучшее соответствие: «DC=example,DC=com»]; [/b] Будем благодарны за любую помощь Спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/31034908/change-active-directory-password-via-spring-ldap[/url]