2017-09-15 112 views
0

我試圖提取某個密碼被拒絕的原因,使用UnboundID LDAPSDK並連接到Red Hat Directory Server。 但是,執行下面的請求後:通過UnboundID獲取來自Red Hat Directory Server的密碼策略違規的原因LDAPSDK

PasswordModifyExtendedRequest passwordModifyExtendedRequest = new PasswordModifyExtendedRequest(userDN, currPassword, newPassword, new Control[]{new Control("1.3.6.1.4.1.42.2.27.8.5.1")}); 
passwordModifyExtendedRequest.setResponseTimeoutMillis(1000); 
LDAPConnection ldapConnection = ldapManager.getLdapConnection(); 
PasswordModifyExtendedResult extendedResult = (PasswordModifyExtendedResult) ldapConnection.processExtendedOperation(passwordModifyExtendedRequest); 
System.out.println(extendedResult); 

我得到這個作爲響應(這是不足夠的描述):

PasswordModifyExtendedResult(resultCode=19 (constraint violation), messageID=2, diagnosticMessage='Failed to update password', responseControls={PasswordPolicyResponseControl(errorType='insufficient password quality', isCritical=false)}) 

然而,當我經由Apache Directory Studio改變密碼,它提供了完全細錯誤消息:

[LDAP: error code 19 - invalid password syntax - password must be at least 8 characters long] 

只要例如,它返回上ApacheDS使用時以下的(這是很好的爲好):

[LDAP: error code 19 - CONSTRAINT_VIOLATION: failed for MessageType : MODIFY_REQUEST Message ID : 15  Modify Request   Object : 'cn=josef,ou=users,o=test'    Modification[0]     Operation : replace     Modification userPassword: 0x70 0x65 0x70 0x61 [email protected]6d9db6: Password should have a minimum of 5 characters] 

問題是,有沒有辦法讓Apache目錄工作室設法得到這些信息?我嘗試過搜索codebase,但無法找到它。

換句話說,我需要得到「密碼必須至少8個字符長」以某種方式響應。

回答

0

實測值的溶液中,使用常規ModifyRequest如下:

// ... 
import com.unboundid.util.Base64; 
// ... 
Modification passwordReplacementModification = new Modification(
     ModificationType.REPLACE, "userPassword", 
     newPassword.getBytes()); 
ModifyRequest modifyRequest = new ModifyRequest(
     user.getDn(), passwordReplacementModification); 
LDAPResult modifyResult = ldapManager.getLdapConnectionAsAdmin().modify(modifyRequest); 

這導致以下情況例外:

LDAPException(resultCode=19 (constraint violation), errorMessage='invalid password syntax - password must contain at least 1 uppercase characters', diagnosticMessage='invalid password syntax - password must contain at least 1 uppercase characters', ldapSDKVersion=4.0.1, revision='26090')