Как да промените паролата на друг потребител след удостоверяване на един потребител

Успешно удостоверих един потребител. Сега искам да променя паролата за друг потребител. Първият ми потребител е точно като Admin, така че паролата на други потребители трябва да бъде променена или нулирана.

Използвам следния код:

LdapContext ctx = null;     
Hashtable env = new Hashtable();            
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "username");
env.put(Context.SECURITY_CREDENTIALS, "password");
env.put(Context.PROVIDER_URL, "ldap://xx.xxx.xx.xxx:389");

ctx = new InitialLdapContext(env, null);     

final DistinguishedName dn = usernameMapper.buildDn(username);

final ModificationItem[] passwordChange = new ModificationItem[] 
{
    new ModificationItem(DirContext.REPLACE_ATTRIBUTE, 
                         new BasicAttribute(passwordAttributeName, newPassword))
};

ctx.modifyAttributes(dn, passwordChange);

System.out.println("Password changed successfully");
ctx.close();

полета атрибути стойности е тук:

 String passwordAttributeName = "userPassword";
 static LdapUsernameToDnMapper usernameMapper 
                      = new DefaultLdapUsernameToDnMapper("OU=DROID-TEST,DC=example,DC=com",
                                                          "cn");
 private String username = "test01";
 private String password = "test01";
 private String newPassword = "123";

Получавам следното изключение:

javax.naming.NoPermissionException: [LDAP: error code 50 - 00002098: SecErr: DSID-03150A48, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0    

person Amandeep Singh Bhatia    schedule 13.12.2011    source източник
comment
вижте раздела АКТУАЛИЗАЦИЯ / РАЗРЕШАВАНЕ на това: stackoverflow.com/questions/9699912/   -  person Diego87    schedule 13.12.2016


Отговори (1)


NoPermissionException означава, че потребителят, с когото се свързвате към LDAP, няма достъп за замяна на този атрибут. Трябва да дадете на потребителя, който свързвате, с достъп от по-високо ниво.

Освен това, в зависимост от доставчика на LDAP, може да се наложи да се свързвате през защитена ldaps връзка, а не чрез основна ldap връзка.

person Andrew White    schedule 13.12.2011
comment
@Amandeep Singh Bhatia: моля, не забравяйте да гласувате за/приемете този отговор, ако работи за вас. - person Andrew White; 14.12.2011