mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Ludovic Poitou
31.41.2014 28dd3196d71d6629836f77618f593ef050846ca4
Port to opendj3-dev branch of the fix for OPENDJ-1319. Relax constraint on minimal character sets in password validator.
3 files modified
110 ■■■■ changed files
opendj3-server-dev/src/messages/messages/extension.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java 102 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/extension.properties
@@ -869,8 +869,8 @@
MILD_ERR_PWSCHEME_INVALID_BASE64_DECODED_STORED_PASSWORD_578=The password \
value %s has been base64-decoded but is too short to be valid
MILD_ERR_CHARSET_VALIDATOR_MIN_CHAR_SETS_TOO_SMALL_579=The provided minimum \
 required number of character sets '%d' is invalid because it must include \
 all mandatory character sets and at least one optional character set
 required number of character sets '%d' is invalid because it must at least \
 include all mandatory character sets
MILD_ERR_CHARSET_VALIDATOR_MIN_CHAR_SETS_TOO_BIG_580=The provided minimum \
 required number of character sets '%d' is invalid because it is greater than \
 the total number of defined character sets
opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
@@ -250,7 +250,7 @@
      int requiredOptionalCharacterSets;
      if (currentConfig.getMinCharacterSets() == null)
      {
        requiredOptionalCharacterSets = 1;
        requiredOptionalCharacterSets = 0;
      }
      else
      {
@@ -463,7 +463,7 @@
    {
      int minCharacterSets = configuration.getMinCharacterSets();
      if (minCharacterSets <= mandatoryCharacterSets)
      if (minCharacterSets < mandatoryCharacterSets)
      {
        LocalizableMessage message = ERR_CHARSET_VALIDATOR_MIN_CHAR_SETS_TOO_SMALL
            .get(minCharacterSets);
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java
@@ -163,7 +163,22 @@
         "ds-cfg-character-set-ranges: 1:A-Z\u13a0-\u13f4",
         "ds-cfg-character-set: 0:0123456789",
         "ds-cfg-allow-unclassified-characters: true",
         "ds-cfg-min-character-sets: 2");
        "ds-cfg-min-character-sets: 2",
        "",
        "dn: cn=Character Set,cn=Password Validators,cn=config",
        "objectClass: top",
        "objectClass: ds-cfg-password-validator",
        "objectClass: ds-cfg-character-set-password-validator",
        "cn: Character Set",
        "ds-cfg-java-class: org.opends.server.extensions." +
            "CharacterSetPasswordValidator",
        "ds-cfg-enabled: true",
        "ds-cfg-character-set: 1:abcdefghijklmnopqrstuvwxyz",
        "ds-cfg-character-set: 1:ABCDEFGHIJKLMNOPQRSTUVWXYZ",
        "ds-cfg-character-set: 1:0123456789",
        "ds-cfg-character-set: 0:~!@#$%^&*()-_=+[]{}|;:,.<>/?",
        "ds-cfg-allow-unclassified-characters: false",
        "ds-cfg-min-character-sets: 3");
    Object[][] array = new Object[entries.size()][1];
    for (int i=0; i < array.length; i++)
@@ -179,7 +194,7 @@
  /**
   * Tests the process of initializing the server with valid configurations.
   *
   * @param  entry  The configuration entry to use for the initialization.
   * @param  e  The configuration entry to use for the initialization.
   *
   * @throws  Exception  If an unexpected problem occurs.
   */
@@ -322,20 +337,6 @@
         "ds-cfg-allow-unclassified-characters: true",
         "ds-cfg-min-character-sets: 0",
         "",
         // Malformed min-character-sets: too low.
         "dn: cn=Character Set,cn=Password Validators,cn=config",
         "objectClass: top",
         "objectClass: ds-cfg-password-validator",
         "objectClass: ds-cfg-character-set-password-validator",
         "cn: Character Set",
         "ds-cfg-java-class: org.opends.server.extensions." +
              "CharacterSetPasswordValidator",
         "ds-cfg-enabled: true",
         "ds-cfg-character-set: 1:abcdefghijklmnopqrstuvwxyz",
         "ds-cfg-character-set: 0:0123456789",
         "ds-cfg-allow-unclassified-characters: true",
         "ds-cfg-min-character-sets: 1",
         "",
         // Malformed min-character-sets: too high.
         "dn: cn=Character Set,cn=Password Validators,cn=config",
         "objectClass: top",
@@ -488,7 +489,7 @@
  /**
   * Tests the process of initializing the server with invalid configurations.
   *
   * @param  entry  The configuration entry to use for the initialization.
   * @param  e  The configuration entry to use for the initialization.
   *
   * @throws  Exception  If an unexpected problem occurs.
   */
@@ -881,6 +882,73 @@
        "abc\u0e17ABC",
        true
      },
      // 1 mandatory, 2 optional, allow unclassified,
      // must have at least two optional, regardless of unclassified ones
      new Object[]
      {
        TestCaseUtils.makeEntry(
              "dn: cn=Character Set,cn=Password Validators,cn=config",
              "objectClass: top",
              "objectClass: ds-cfg-password-validator",
              "objectClass: ds-cfg-character-set-password-validator",
              "cn: Character Set",
              "ds-cfg-java-class: org.opends.server.extensions." +
                  "CharacterSetPasswordValidator",
              "ds-cfg-enabled: true",
              "ds-cfg-character-set: 0:abcdefghijklmnopqrstuvwxyz",
              "ds-cfg-character-set: 0:ABCDEFGHIJKLMNOPQRSTUVWXYZ",
              "ds-cfg-character-set: 1:0123456789",
              "ds-cfg-min-character-sets: 3",
              "ds-cfg-allow-unclassified-characters: true"),
        "abc123?!",
        false
      },
      // 1 mandatory, 2 optional, allow unclassified,
      // must have at least two optional, regardless of unclassified ones.
      new Object[]
      {
        TestCaseUtils.makeEntry(
              "dn: cn=Character Set,cn=Password Validators,cn=config",
              "objectClass: top",
              "objectClass: ds-cfg-password-validator",
              "objectClass: ds-cfg-character-set-password-validator",
              "cn: Character Set",
              "ds-cfg-java-class: org.opends.server.extensions." +
                  "CharacterSetPasswordValidator",
              "ds-cfg-enabled: true",
              "ds-cfg-character-set: 0:abcdefghijklmnopqrstuvwxyz",
              "ds-cfg-character-set: 0:ABCDEFGHIJKLMNOPQRSTUVWXYZ",
              "ds-cfg-character-set: 1:0123456789",
              "ds-cfg-min-character-sets: 3",
              "ds-cfg-allow-unclassified-characters: true"),
        "123!@#$%",
        false
      },
      // 1 mandatory, 2 optional, allow unclassified,
      // must have at least two optional, regardless of unclassified ones.
      new Object[]
      {
        TestCaseUtils.makeEntry(
              "dn: cn=Character Set,cn=Password Validators,cn=config",
              "objectClass: top",
              "objectClass: ds-cfg-password-validator",
              "objectClass: ds-cfg-character-set-password-validator",
              "cn: Character Set",
              "ds-cfg-java-class: org.opends.server.extensions." +
                  "CharacterSetPasswordValidator",
              "ds-cfg-enabled: true",
              "ds-cfg-character-set: 0:abcdefghijklmnopqrstuvwxyz",
              "ds-cfg-character-set: 0:ABCDEFGHIJKLMNOPQRSTUVWXYZ",
              "ds-cfg-character-set: 1:0123456789",
              "ds-cfg-min-character-sets: 3",
              "ds-cfg-allow-unclassified-characters: true"),
        "abc123ABC!@#",
        true
      },
    };
  }