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("Microsoft@123");        
      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("microsoft@123");
      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("microsoft@123");        
      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

?\DE~@c3

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("microsoft@123");
      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("Microsoft@123");        
      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("Microsoft@123");        
      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("microsoft@123");        
      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("password@123");
      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("password@123");
      password.setPasswordReferences(
         new PasswordData.SourceReference("source", "password"), 
         new PasswordData.HistoricalReference("password@123")
      );
      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'.]