2015-09-07 315 views
0

我试图使用下面的代码更改LDAP中的用户密码,我不是LDAP的管理员,因此我与具有ou = systemusers的用户建立连接它可以创建用户,并将用户添加到组中。我知道旧密码的使用,将做改变使用unboundid在LDAP中更改用户密码

PasswordModifyExtendedRequest passwordModifyRequest = 
     new PasswordModifyExtendedRequest(
      "uid=test.user,ou=People,dc=example,dc=com", // The user to update 
      (String) null, // The current password for the user. 
      (String) null); // The new password. null = server will generate 

PasswordModifyExtendedResult passwordModifyResult; 
try 
{ 
    passwordModifyResult = (PasswordModifyExtendedResult) 
     connection.processExtendedOperation(passwordModifyRequest); 
    // This doesn't necessarily mean that the operation was successful, since 
    // some kinds of extended operations return non-success results under 
    // normal conditions. 
} 
catch (LDAPException le) 
{ 
    // For an extended operation, this generally means that a problem was 
    // encountered while trying to send the request or read the result. 
    passwordModifyResult = new PasswordModifyExtendedResult(
     new ExtendedResult(le)); 
} 

LDAPTestUtils.assertResultCodeEquals(passwordModifyResult, 
     ResultCode.SUCCESS); 
String serverGeneratedNewPassword = 
     passwordModifyResult.getGeneratedPassword(); 

但我总是得到这样的结果。

PasswordModifyExtendedResult(resultCode=50 (insufficient access rights), messageID=4, diagnosticMessage='You do not have sufficient privileges to perform password reset operations') 

如何更改用户密码了解旧密码?

回答

2

您必须以具有足够特权执行操作的用户登录,或者更常用作为用户自己使用旧密码进行登录,当然这是额外的完整性检查。否则,LDAP服务器配置错误。

+0

所以我可以更改密码如果我登录像用户或我将有更多的特权。我测试了第二个,它的工作原理,但我怎么能执行第一,如果我使用连接权利形式的池连接,做一个用户绑定? – anquegi

+0

除非LDAP服务器配置错误,否则用户应始终能够更改自己的密码。我不明白你的第二句话中的问题。 – EJP

+0

好的,谢谢,我说我有一个来自ou = systemusers的帐户,但不是管理员,但似乎没有足够的权限来更改密码,其他人有。 – anquegi