Passay - Guía rápida
Passayes una biblioteca de validación y generación de contraseñas basada en Java. Proporciona una lista completa de funciones para validar / generar contraseñas y es altamente configurable.
Componentes Passay
Passay API tiene 3 componentes principales.
Rule - una o más reglas que definen un conjunto de reglas de política de contraseñas.
PasswordValidator - Un componente de validación que valida una contraseña contra un conjunto de reglas dado.
PasswordGenerator - Un componente generador que produce contraseñas para satisfacer un conjunto de reglas dado.
Descripción general de la regla
Las reglas son los pilares fundamentales tanto para la validación como para la generación de contraseñas. Hay dos amplias categorías de reglas:
La coincidencia positiva requiere que las contraseñas cumplan una regla.
La coincidencia negativa rechaza las contraseñas que cumplen una regla.
Caracteristicas
Las siguientes son algunas de las características que ofrece la biblioteca Passay.
Password Validation- La biblioteca Passay ayuda a hacer cumplir una política de contraseñas al validar las contraseñas con un conjunto de reglas configurables. Tiene un amplio conjunto de reglas existentes para casos de uso comunes. Para casos adicionales, proporciona una interfaz de regla simple para implementar la regla personalizada.
Password Generation - Proporciona un conjunto de reglas configurables que también se pueden utilizar para generar contraseñas.
Command Line Tools - Proporciona herramientas para automatizar la aplicación de políticas de contraseñas.
convenient - Fácil de usar.
Extensible - Todos los componentes de Passay son extensibles.
Supports Internalization - Los componentes Passay están listos para la internacionalización.
Configuración del entorno local
Si aún está dispuesto a configurar su entorno para el lenguaje de programación Java, esta sección lo guía sobre cómo descargar y configurar Java en su máquina. Siga los pasos que se mencionan a continuación para configurar el entorno.
Java SE está disponible gratuitamente desde el enlace Descargar Java . Entonces descargas una versión basada en tu sistema operativo.
Siga las instrucciones para descargar Java y ejecutar el .exepara instalar Java en su máquina. Una vez que haya instalado Java en su máquina, necesitará establecer variables de entorno para apuntar a los directorios de instalación correctos -
Configuración de la ruta para Windows 2000 / XP
Suponemos que ha instalado Java en el directorio c: \ Archivos de programa \ java \ jdk -
Haga clic derecho en 'Mi PC' y seleccione 'Propiedades'.
Haga clic en el botón 'Variables de entorno' en la pestaña 'Avanzado'.
Ahora, modifique la variable 'Ruta' para que también contenga la ruta al ejecutable de Java. Por ejemplo, si la ruta está configurada actualmente en 'C: \ WINDOWS \ SYSTEM32', cambie su ruta para que lea 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin'.
Configuración de la ruta para Windows 95/98 / ME
Suponemos que ha instalado Java en el directorio c: \ Archivos de programa \ java \ jdk -
Edite el archivo 'C: \ autoexec.bat' y agregue la siguiente línea al final - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Configuración de la ruta para Linux, UNIX, Solaris, FreeBSD
La variable de entorno PATH debe establecerse para que apunte a dónde se han instalado los binarios de Java. Consulte la documentación de su shell si tiene problemas para hacer esto.
Por ejemplo, si usa bash como su shell, entonces agregaría la siguiente línea al final de su '.bashrc: export PATH = / path / to / java: $ PATH'
Editores populares de Java
Para escribir sus programas Java, necesita un editor de texto. Hay muchos IDE sofisticados disponibles en el mercado. Pero por ahora, puede considerar uno de los siguientes:
Notepad - En una máquina con Windows, puede usar cualquier editor de texto simple como el Bloc de notas (recomendado para este tutorial), TextPad.
Netbeans - Es un IDE de Java que es de código abierto y gratuito que se puede descargar desde https://www.netbeans.org/index.html.
Eclipse - También es un IDE de Java desarrollado por la comunidad de código abierto eclipse y se puede descargar desde https://www.eclipse.org/.
Descarga Passay Archive
Descargue la última versión del archivo jar de Passay desde Maven Repository - . En este tutorial, passay-1.4.0.jar se descarga y se copia en la carpeta C: \> passay.
SO | Nombre de archivo |
---|---|
Ventanas | passay-1.4.0.jar |
Linux | passay-1.4.0.jar |
Mac | passay-1.4.0.jar |
Establecer entorno de Passay
Selecciona el PASSAYvariable de entorno para apuntar a la ubicación del directorio base donde se almacena Passay jar en su máquina. Suponiendo que hemos extraído passay-1.4.0.jar en la carpeta Passay en varios sistemas operativos de la siguiente manera.
SO | Salida |
---|---|
Ventanas | Establezca la variable de entorno PASSAY en C: \ Passay |
Linux | exportar PASSAY = / usr / local / Passay |
Mac | exportar PASSAY = / Library / Passay |
Establecer la variable CLASSPATH
Selecciona el CLASSPATHvariable de entorno para apuntar a la ubicación del jar de Passay. Suponiendo que ha almacenado passay-1.4.0.jar en la carpeta Passay en varios sistemas operativos de la siguiente manera.
SO | Salida |
---|---|
Ventanas | Establezca la variable de entorno CLASSPATH en% CLASSPATH%;% Passay% \ passay-1.4.0.jar;.; |
Linux | export CLASSPATH = $ CLASSPATH: $ PASSAY / passay-1.4.0.jar :. |
Mac | export CLASSPATH = $ CLASSPATH: $ PASSAY / passay-1.4.0.jar :. |
Una política de contraseñas típica contiene un conjunto de reglas para verificar si una contraseña cumple con las reglas de la organización. Considere la siguiente política:
La longitud de la contraseña debe tener entre 8 y 16 caracteres.
Una contraseña no debe contener espacios en blanco.
Una contraseña debe contener cada uno de los siguientes: superior, inferior, dígito y un símbolo.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Password validated.
La biblioteca Passay proporciona una API MessageResolver para anular los mensajes predeterminados que usa el validador. Puede tomar la ruta al archivo de propiedades personalizadas y usar las claves estándar para anular el mensaje requerido.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña y muestra un mensaje personalizado usando la biblioteca Passay.
messages.properties
INSUFFICIENT_UPPERCASE=Password missing at least %1$s uppercase characters.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.MessageResolver;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.PropertiesMessageResolver;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
List<Rule> rules = new ArrayList<>();
rules.add(new LengthRule(8, 16));
rules.add(new WhitespaceRule());
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
Properties props = new Properties();
props.load(new FileInputStream("E:/Test/messages.properties"));
MessageResolver resolver = new PropertiesMessageResolver(props);
PasswordValidator validator = new PasswordValidator(resolver, rules);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password missing at least 1 uppercase characters.]
Muchas veces, una política de contraseñas exige el cumplimiento de reglas mínimas de reglas dadas, como una contraseña, que debe cumplir al menos con M de N reglas. Considere la siguiente política.
La longitud de la contraseña debe tener entre 8 y 16 caracteres.
Una contraseña no debe contener espacios en blanco.
Una contraseña debe contener al menos tres de los siguientes: superior, inferior, dígito o símbolo.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import java.io.FileNotFoundException;
import java.io.IOException;
import org.passay.CharacterCharacteristicsRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
//Rule 1: Password length should be in between
//8 and 16 characters
Rule rule1 = new LengthRule(8, 16);
//Rule 2: No whitespace allowed
Rule rule2 = new WhitespaceRule();
CharacterCharacteristicsRule rule3 = new CharacterCharacteristicsRule();
//M - Mandatory characters count
rule3.setNumberOfCharacteristics(3);
//Rule 3.a: One Upper-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: One Lower-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: One digit
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: One special character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rule1, rule2, rule3);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Password validated.
PasswordGeneratorayuda a generar contraseñas utilizando la política dada. Considere la siguiente política:
La longitud de la contraseña debe ser de 8 caracteres.
Una contraseña debe contener cada uno de los siguientes: superior, inferior, dígito y un símbolo.
Ejemplo
El siguiente ejemplo muestra la generación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.PasswordGenerator;
public class PassayExample {
public static void main(String[] args) {
CharacterRule alphabets = new CharacterRule(EnglishCharacterData.Alphabetical);
CharacterRule digits = new CharacterRule(EnglishCharacterData.Digit);
CharacterRule special = new CharacterRule(EnglishCharacterData.Special);
PasswordGenerator passwordGenerator = new PasswordGenerator();
String password = passwordGenerator.generatePassword(8, alphabets, digits, special);
System.out.println(password);
}
}
Salida
?\[email protected]
AllowedCharacterRulepermite especificar los caracteres que puede incluir una contraseña. Considere el siguiente ejemplo.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import org.passay.AllowedCharacterRule;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should contains only a, b and c
Rule rule1 = new AllowedCharacterRule(new char[] {'a', 'b', 'c'});
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("abcabcab1");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password contains the illegal character '1'.]
AllowedRegexRulepermite especificar el patrón regular que debe cumplir una contraseña. Considere el siguiente ejemplo.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import org.passay.AllowedRegexRule;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should contains alphabets only
Rule rule1 = new AllowedRegexRule("^[A-Za-z]+$");
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password must match pattern '^[A-Za-z]+$'.]
CharacterRuleayuda a definir un conjunto de caracteres y un número mínimo. de caracteres requeridos en una contraseña.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Password validated.
LengthRule ayuda a definir la longitud mínima y máxima de una contraseña.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Password validated.
CharacterCharacteristicsRule ayuda a definir si una contraseña satisface determinadas reglas definidas N o no.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import java.io.FileNotFoundException;
import java.io.IOException;
import org.passay.CharacterCharacteristicsRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
//Rule 1: Password length should be in between
//8 and 16 characters
Rule rule1 = new LengthRule(8, 16);
//Rule 2: No whitespace allowed
Rule rule2 = new WhitespaceRule();
CharacterCharacteristicsRule rule3 = new CharacterCharacteristicsRule();
//M - Mandatory characters count
rule3.setNumberOfCharacteristics(3);
//Rule 3.a: One Upper-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: One Lower-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: One digit
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: One special character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rule1, rule2, rule3);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Password validated.
LengthComplexityRuleayuda a definir la regla aplicable a una contraseña en función de su longitud. Considere la siguiente política.
Si la longitud de la contraseña está entre 1 y 5 caracteres, solo se permiten letras en minúsculas.
Si la longitud de la contraseña está entre 6 y 8 caracteres, solo se permiten a, by c.
Ejemplo
El siguiente ejemplo muestra la validación de una contraseña contra la política anterior utilizando la biblioteca Passay.
import org.passay.AllowedCharacterRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthComplexityRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
LengthComplexityRule lengthComplexityRule = new LengthComplexityRule();
//Rule: Password of 1 to 5 characters should contains lower case alphabets only
lengthComplexityRule.addRules("[1,5]",
new CharacterRule(EnglishCharacterData.LowerCase, 5));
//8 and 16 characters
lengthComplexityRule.addRules("[6,8]",
new AllowedCharacterRule(new char[] { 'a', 'b', 'c' }));
PasswordValidator validator = new PasswordValidator(lengthComplexityRule);
PasswordData password = new PasswordData("abcdef");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [
Password contains the illegal character 'd'.,
Password contains the illegal character 'e'.,
Password contains the illegal character 'f'.,
Password meets 0 complexity rules, but 1 are required.]
IllegalCharacterRulepermite especificar los caracteres que no están permitidos en una contraseña. Considere el siguiente ejemplo.
Ejemplo
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
NumberRangeRulepermite especificar el rango de números que no están permitidos en una contraseña. Considere el siguiente ejemplo.
Ejemplo
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
WhitespaceRulepermite especificar que los espacios en blanco no están permitidos en una contraseña. Considere el siguiente ejemplo.
Ejemplo
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
DictionaryRulepermite comprobar si determinadas palabras no están especificadas como contraseña. Considere el siguiente ejemplo.
Ejemplo
import org.passay.DictionaryRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.dictionary.ArrayWordList;
import org.passay.dictionary.WordListDictionary;
public class PassayExample {
public static void main(String[] args) {
WordListDictionary wordListDictionary = new WordListDictionary(
new ArrayWordList(new String[] { "password", "username" }));
DictionaryRule dictionaryRule = new DictionaryRule(wordListDictionary);
PasswordValidator validator = new PasswordValidator(dictionaryRule);
PasswordData password = new PasswordData("password");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password contains the dictionary word 'password'.]
DictionarySubstringRulepermite comprobar si determinadas palabras no forman parte de una contraseña. Considere el siguiente ejemplo.
Ejemplo
import org.passay.DictionarySubstringRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.dictionary.ArrayWordList;
import org.passay.dictionary.WordListDictionary;
public class PassayExample {
public static void main(String[] args) {
WordListDictionary wordListDictionary = new WordListDictionary(
new ArrayWordList(new String[] { "password", "username" }));
DictionarySubstringRule dictionaryRule = new DictionarySubstringRule(wordListDictionary);
PasswordValidator validator = new PasswordValidator(dictionaryRule);
PasswordData password = new PasswordData("[email protected]");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password contains the dictionary word 'password'.]
HistoryRulepermite comprobar si la contraseña proporcionada no se ha utilizado en el pasado. Considere el siguiente ejemplo.
Ejemplo
import org.passay.HistoryRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.SourceRule;
public class PassayExample {
public static void main(String[] args) {
SourceRule sourceRule = new SourceRule();
HistoryRule historyRule = new HistoryRule();
PasswordValidator validator = new PasswordValidator(sourceRule, historyRule);
PasswordData password = new PasswordData("[email protected]");
password.setPasswordReferences(
new PasswordData.SourceReference("source", "password"),
new PasswordData.HistoricalReference("[email protected]")
);
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password matches one of 1 previous passwords.]
RepeatCharacterRegexRulepermite comprobar si la contraseña dada tiene caracteres ascii repetidos. Considere el siguiente ejemplo.
Ejemplo
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RepeatCharacterRegexRule;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should not contain repeated entries
Rule rule1 = new RepeatCharacterRegexRule(3);
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("aaefhehhhhh");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password matches the illegal pattern 'hhh'.]
UsernameRuleasegura que la contraseña no contenga el nombre de usuario. Considere el siguiente ejemplo.
Ejemplo
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.UsernameRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should not contain user-name
Rule rule = new UsernameRule();
PasswordValidator validator = new PasswordValidator(rule);
PasswordData password = new PasswordData("microsoft");
password.setUsername("micro");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Salida
Invalid Password: [Password contains the user id 'micro'.]