From 3e93ff792ec77102003f78d0c1e9495291a3b1cd Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Fri, 31 Jan 2014 21:41:44 +0000
Subject: [PATCH] Port to opendj3-dev branch of the fix for OPENDJ-1319. Relax constraint on minimal character sets in password validator.
---
opendj-sdk/opendj3-server-dev/src/messages/messages/extension.properties | 4
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java | 4
opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java | 252 ++++++++++++++++++++++++++++++++------------------
3 files changed, 164 insertions(+), 96 deletions(-)
diff --git a/opendj-sdk/opendj3-server-dev/src/messages/messages/extension.properties b/opendj-sdk/opendj3-server-dev/src/messages/messages/extension.properties
index 61834b4..10a901e 100644
--- a/opendj-sdk/opendj3-server-dev/src/messages/messages/extension.properties
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
index 154622a..7d78110 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
+++ b/opendj-sdk/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);
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java
index 2f15101..a7e9e7a 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/CharacterSetPasswordValidatorTestCase.java
@@ -88,82 +88,97 @@
throws Exception
{
List<Entry> entries = TestCaseUtils.makeEntries(
- "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: 1:~!@#$%^&*()-_=+[]{}|;:,.<>/?",
- "ds-cfg-allow-unclassified-characters: true",
- "",
- "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-allow-unclassified-characters: true",
- "",
- "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: 1:~!@#$%^&*()-_=+[]{}|;:,.<>/?",
- "ds-cfg-allow-unclassified-characters: false",
- "",
- "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: 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-ranges: 0:0-9",
- "ds-cfg-allow-unclassified-characters: true",
- "ds-cfg-min-character-sets: 1",
- "",
- "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-ranges: 1:A-Z\u13a0-\u13f4",
- "ds-cfg-character-set: 0:0123456789",
- "ds-cfg-allow-unclassified-characters: true",
- "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: 1:~!@#$%^&*()-_=+[]{}|;:,.<>/?",
+ "ds-cfg-allow-unclassified-characters: true",
+ "",
+ "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-allow-unclassified-characters: true",
+ "",
+ "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: 1:~!@#$%^&*()-_=+[]{}|;:,.<>/?",
+ "ds-cfg-allow-unclassified-characters: false",
+ "",
+ "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: 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-ranges: 0:0-9",
+ "ds-cfg-allow-unclassified-characters: true",
+ "ds-cfg-min-character-sets: 1",
+ "",
+ "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-ranges: 1:A-Z\u13a0-\u13f4",
+ "ds-cfg-character-set: 0:0123456789",
+ "ds-cfg-allow-unclassified-characters: true",
+ "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
+ },
+
};
}
--
Gitblit v1.10.0