Passay - Краткое руководство

Passay- это библиотека для генерации и проверки паролей на основе Java. Он предоставляет полный список функций для проверки / генерации паролей и легко настраивается.

Компоненты Passay

Passay API состоит из трех основных компонентов.

  • Rule - одно или несколько правил, определяющих набор правил политики паролей.

  • PasswordValidator - Компонент валидатора, который проверяет пароль на соответствие заданному набору правил.

  • PasswordGenerator - Компонент генератора, который производит пароли для удовлетворения заданного набора правил.

Обзор правила

Правила - это фундаментальные блоки как для проверки, так и для генерации паролей. Есть две широкие категории правил:

  • Положительное совпадение требует, чтобы пароли удовлетворяли правилу.

  • Отрицательное совпадение отклоняет пароли, удовлетворяющие правилу.

Особенности

Ниже приведены некоторые функции, которые предоставляет библиотека Passay.

  • Password Validation- Библиотека Passay помогает в обеспечении соблюдения политики паролей, проверяя пароли на соответствие настраиваемому набору правил. Он имеет богатый набор существующих правил для распространенных случаев использования. Для дополнительных случаев он предоставляет простой интерфейс правила для реализации настраиваемого правила.

  • Password Generation - Он предоставляет настраиваемый набор правил, который также можно использовать для генерации паролей.

  • Command Line Tools - Он предоставляет инструменты для автоматизации применения политики паролей.

  • convenient - Простота использования.

  • Extensible - Все компоненты Passay расширяемы.

  • Supports Internalization - Компоненты Passay готовы к интернационализации.

Настройка локальной среды

Если вы все еще хотите настроить свою среду для языка программирования Java, то в этом разделе вы узнаете, как загрузить и установить Java на свой компьютер. Пожалуйста, следуйте инструкциям ниже, чтобы настроить среду.

Java SE бесплатно доступен по ссылке Загрузить Java . Итак, вы загружаете версию, основанную на вашей операционной системе.

Следуйте инструкциям, чтобы загрузить Java и запустить .exeчтобы установить Java на свой компьютер. После того, как вы установили Java на свой компьютер, вам нужно будет установить переменные среды, чтобы они указывали на правильные каталоги установки -

Настройка пути для Windows 2000 / XP

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk -

  • Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».

  • Нажмите кнопку «Переменные среды» на вкладке «Дополнительно».

  • Теперь измените переменную Path, чтобы она также содержала путь к исполняемому файлу Java. Например, если в настоящее время задан путь «C: \ WINDOWS \ SYSTEM32», измените путь на «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Настройка пути для Windows 95/98 / ME

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk -

  • Отредактируйте файл 'C: \ autoexec.bat' и добавьте в конец следующую строку - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'

Настройка пути для Linux, UNIX, Solaris, FreeBSD

Переменная среды PATH должна указывать на место установки двоичных файлов Java. Обратитесь к документации вашей оболочки, если у вас возникли проблемы с этим.

Например, если вы используете bash в качестве оболочки, вы должны добавить следующую строку в конец своего '.bashrc: export PATH = / path / to / java: $ PATH'

Популярные редакторы Java

Для написания программ на Java вам понадобится текстовый редактор. На рынке доступно множество сложных IDE. Но пока вы можете рассмотреть одно из следующих:

  • Notepad - На компьютере с Windows вы можете использовать любой простой текстовый редактор, например Блокнот (рекомендуется для этого урока), TextPad.

  • Netbeans - Это Java IDE с открытым исходным кодом и бесплатная загрузка, которую можно загрузить с https://www.netbeans.org/index.html.

  • Eclipse - Это также Java IDE, разработанная сообществом разработчиков открытого исходного кода eclipse, которую можно загрузить с https://www.eclipse.org/.

Скачать Passay Archive

Загрузите последнюю версию файла Passay jar из репозитория Maven - . В этом руководстве passay-1.4.0.jar загружается и копируется в папку C: \> passay.

Операционные системы Имя архива
Windows passay-1.4.0.jar
Linux passay-1.4.0.jar
Mac passay-1.4.0.jar

Установить Passay Environment

Установить PASSAYпеременная среды, указывающая на расположение базового каталога, в котором на вашем компьютере хранится Passay jar. Предположим, мы извлекли passay-1.4.0.jar в папку Passay в различных операционных системах следующим образом.

Операционные системы Вывод
Windows Установите для переменной среды PASSAY значение C: \ Passay.
Linux экспорт PASSAY = / usr / local / Passay
Mac экспорт PASSAY = / Library / Passay

Установить переменную CLASSPATH

Установить CLASSPATHпеременная среды, указывающая на расположение баночки Passay. Предположим, вы сохранили passay-1.4.0.jar в папке Passay в различных операционных системах следующим образом.

Операционные системы Вывод
Windows Установите для переменной среды CLASSPATH значение% 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 :.

Типичная политика паролей содержит набор правил для проверки пароля на соответствие правилам организации. Примите во внимание следующую политику:

  • Длина пароля должна быть от 8 до 16 символов.

  • Пароль не должен содержать пробелов.

  • Пароль должен содержать каждое из следующего: верхний, нижний, цифру и символ.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
        }
    }
}

Вывод

Password validated.

Библиотека Passay предоставляет API MessageResolver для переопределения сообщений по умолчанию, используемых валидатором. Он может взять путь к файлу настраиваемых свойств и использовать стандартные ключи для переопределения требуемого сообщения.

пример

В приведенном ниже примере показана проверка пароля и показано настраиваемое сообщение с использованием библиотеки 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));            
      }
   }
}

Вывод

Invalid Password: [Password missing at least 1 uppercase characters.]

Часто политика паролей требует соблюдения минимальных правил из заданных правил, например, пароль должен соответствовать как минимум M из N правил. Рассмотрим следующую политику.

  • Длина пароля должна быть от 8 до 16 символов.

  • Пароль не должен содержать пробелов.

  • Пароль должен содержать как минимум три из следующих элементов: верхний, нижний, цифру или символ.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Password validated.

PasswordGeneratorпомогает в создании пароля с использованием заданной политики. Примите во внимание следующую политику:

  • Длина пароля должна быть 8 символов.

  • Пароль должен содержать каждое из следующего: верхний, нижний, цифру и символ.

пример

В приведенном ниже примере показано создание пароля для указанной выше политики с использованием библиотеки 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);
   }
}

Вывод

?\DE~@c3

AllowedCharacterRuleпозволяет указать символы, которые может включать пароль. Рассмотрим следующий пример.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Invalid Password: [Password contains the illegal character '1'.]

AllowedRegexRuleпозволяет указать обычный шаблон, которому должен удовлетворять пароль. Рассмотрим следующий пример.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Invalid Password: [Password must match pattern '^[A-Za-z]+$'.]

CharacterRuleпомогает в определении набора символов и минимального номера. символов, необходимых в пароле.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Password validated.

LengthRule помогает определить минимальную и максимальную длину пароля.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Password validated.

CharacterCharacteristicsRule помогает определить, удовлетворяет ли пароль заданным N определенным правилам или нет.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

Password validated.

LengthComplexityRuleпомогает определить применимое правило для пароля в зависимости от его длины. Рассмотрим следующую политику.

  • Если длина пароля составляет от 1 до 5 символов, разрешены только строчные буквы.

  • Если длина пароля составляет от 6 до 8 символов, то разрешены только символы a, b и c.

пример

В приведенном ниже примере показана проверка пароля по указанной выше политике с использованием библиотеки 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));            
      }
   }
}

Вывод

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.]

IllegalCharacterRuleпозволяет указать символы, недопустимые в пароле. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]

NumberRangeRuleпозволяет указать диапазон чисел, которые не допускаются в пароле. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]

WhitespaceRuleпозволяет указать, что в пароле нельзя использовать пробелы. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]

DictionaryRuleпозволяет проверить, не указаны ли определенные слова в качестве пароля. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [Password contains the dictionary word 'password'.]

DictionarySubstringRuleпозволяет проверить, не являются ли определенные слова частью пароля. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [Password contains the dictionary word 'password'.]

HistoryRuleпозволяет проверить, не использовался ли данный пароль в недавнем прошлом. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [Password matches one of 1 previous passwords.]

RepeatCharacterRegexRuleпозволяет проверить, содержит ли данный пароль повторяющиеся символы ascii. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [Password matches the illegal pattern 'hhh'.]

UsernameRuleгарантирует, что пароль не содержит имени пользователя. Рассмотрим следующий пример.

пример

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));            
      }
   }
}

Вывод

Invalid Password: [Password contains the user id 'micro'.]