public static boolean executePasswordModifyOperation ( final String currentDn , final ConnectionFactory connectionFactory , final String oldPassword , final String newPassword , final AbstractLdapProperties . LdapType type ) { try ( val modifyConnection = createConnection ( connectionFactory ) ) { if ( ! modifyConnection . getConnectionConfig ( ) . getUseSSL ( ) && ! modifyConnection . getConnectionConfig ( ) . getUseStartTLS ( ) ) { LOGGER . warn ( "Executing password modification op under a non-secure LDAP connection; " + "To modify password attributes, the connection to the LDAP server SHOULD be secured and/or encrypted." ) ; } if ( type == AbstractLdapProperties . LdapType . AD ) { LOGGER . debug ( "Executing password modification op for active directory based on " + "[https://support.microsoft.com/en-us/kb/269190]" ) ; val operation = new ModifyOperation ( modifyConnection ) ; val response = operation . execute ( new ModifyRequest ( currentDn , new AttributeModification ( AttributeModificationType . REPLACE , new UnicodePwdAttribute ( newPassword ) ) ) ) ; LOGGER . debug ( "Result code [{}], message: [{}]" , response . getResult ( ) , response . getMessage ( ) ) ; return response . getResultCode ( ) == ResultCode . SUCCESS ; } LOGGER . debug ( "Executing password modification op for generic LDAP" ) ; val operation = new PasswordModifyOperation ( modifyConnection ) ; val response = operation . execute ( new PasswordModifyRequest ( currentDn , StringUtils . isNotBlank ( oldPassword ) ? new Credential ( oldPassword ) : null , new Credential ( newPassword ) ) ) ; LOGGER . debug ( "Result code [{}], message: [{}]" , response . getResult ( ) , response . getMessage ( ) ) ; return response . getResultCode ( ) == ResultCode . SUCCESS ; } catch ( final LdapException e ) { LOGGER . error ( e . getMessage ( ) , e ) ; } return false ; }
Execute a password modify operation .