2017-09-15 1 views
0

Ich versuche einen Grund zu finden, warum ein bestimmtes Passwort verweigert wurde, indem ich UnboundID LDAPSDK verwende und eine Verbindung zu Red Hat Directory Server herstelle. Doch nach der folgenden Anforderung ausführen:Grund für die Verletzung der Passwortrichtlinie von Red Hat Directory Server über UnboundID 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); 

ich dies als eine Antwort (die genug nicht beschreibend ist):

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

Allerdings, wenn ich das Passwort über Apache Directory Studio ändern, bietet es perfekt Feinfehlermeldung:

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

Nur es zum Beispiel der folgende zurückgibt, wenn auf ApacheDS verwendet (was auch in Ordnung ist):

[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] 

Die Frage ist, gibt es eine Möglichkeit, die Informationen zu bekommen, dass Apache Directory Studio zu bekommen verwaltet? Ich habe versucht, ihre codebase zu durchsuchen, konnte es aber nicht finden.

Mit anderen Worten, ich muss die "Passwort muss mindestens 8 Zeichen lang sein" in der Antwort irgendwie.

Antwort

0

eine Lösung gefunden, ein regelmäßiges ModifyRequest wie folgt verwendet:

// ... 
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); 

Diese in der folgenden Ausnahme ergibt:

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') 
Verwandte Themen