Passay - Kurzanleitung

Passayist eine Java-basierte Bibliothek zur Kennwortgenerierung und -validierung. Es bietet eine umfassende Liste von Funktionen zum Überprüfen / Generieren von Kennwörtern und ist hochgradig konfigurierbar.

Passay-Komponenten

Die Passay-API besteht aus 3 Kernkomponenten.

  • Rule - eine oder mehrere Regeln, die einen Regelsatz für Kennwortrichtlinien definieren.

  • PasswordValidator - Eine Validierungskomponente, die ein Kennwort anhand eines bestimmten Regelsatzes validiert.

  • PasswordGenerator - Eine Generatorkomponente, die Kennwörter erzeugt, um einen bestimmten Regelsatz zu erfüllen.

Regelübersicht

Regeln sind die Grundbausteine ​​für die Kennwortüberprüfung und -generierung. Es gibt zwei große Kategorien von Regeln:

  • Für eine positive Übereinstimmung müssen Kennwörter einer Regel entsprechen.

  • Negative Übereinstimmungen lehnen Kennwörter ab, die einer Regel entsprechen.

Eigenschaften

Im Folgenden finden Sie einige der Funktionen, die die Passay-Bibliothek bietet.

  • Password Validation- Die Passay-Bibliothek hilft bei der Durchsetzung einer Kennwortrichtlinie, indem Kennwörter anhand eines konfigurierbaren Regelsatzes überprüft werden. Es verfügt über eine Vielzahl vorhandener Regeln für allgemeine Anwendungsfälle. In weiteren Fällen bietet es eine einfache Regelschnittstelle zum Implementieren der benutzerdefinierten Regel.

  • Password Generation - Es bietet einen konfigurierbaren Regelsatz, mit dem auch Kennwörter generiert werden können.

  • Command Line Tools - Es bietet Tools zur Automatisierung der Durchsetzung von Kennwortrichtlinien.

  • convenient - Einfach zu bedienen.

  • Extensible - Alle Passay-Komponenten sind erweiterbar.

  • Supports Internalization - Passay-Komponenten sind internationalisierungsbereit.

Einrichtung der lokalen Umgebung

Wenn Sie weiterhin bereit sind, Ihre Umgebung für die Programmiersprache Java einzurichten, finden Sie in diesem Abschnitt Anleitungen zum Herunterladen und Einrichten von Java auf Ihrem Computer. Befolgen Sie die unten aufgeführten Schritte, um die Umgebung einzurichten.

Java SE ist frei verfügbar über den Link Java herunterladen . Sie laden also eine Version herunter, die auf Ihrem Betriebssystem basiert.

Befolgen Sie die Anweisungen, um Java herunterzuladen und auszuführen .exeum Java auf Ihrem Computer zu installieren. Sobald Sie Java auf Ihrem Computer installiert haben, müssen Sie Umgebungsvariablen festlegen, die auf korrekte Installationsverzeichnisse verweisen.

Einrichten des Pfads für Windows 2000 / XP

Wir gehen davon aus, dass Sie Java im Verzeichnis c: \ Programme \ java \ jdk installiert haben -

  • Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz" und wählen Sie "Eigenschaften".

  • Klicken Sie auf der Registerkarte "Erweitert" auf die Schaltfläche "Umgebungsvariablen".

  • Ändern Sie nun die Variable 'Path' so, dass sie auch den Pfad zur ausführbaren Java-Datei enthält. Wenn der Pfad derzeit auf "C: \ WINDOWS \ SYSTEM32" festgelegt ist, ändern Sie Ihren Pfad in "C: \ WINDOWS \ SYSTEM32; c: \ Programme \ java \ jdk \ bin".

Einrichten des Pfads für Windows 95/98 / ME

Wir gehen davon aus, dass Sie Java im Verzeichnis c: \ Programme \ java \ jdk installiert haben -

  • Bearbeiten Sie die Datei 'C: \ autoexec.bat' und fügen Sie am Ende die folgende Zeile hinzu: 'SET PATH =% PATH%; C: \ Programme \ java \ jdk \ bin'

Einrichten des Pfads für Linux, UNIX, Solaris, FreeBSD

Die Umgebungsvariable PATH sollte so eingestellt sein, dass sie darauf verweist, wo die Java-Binärdateien installiert wurden. Informationen hierzu finden Sie in Ihrer Shell-Dokumentation.

Wenn Sie beispielsweise bash als Shell verwenden, fügen Sie die folgende Zeile am Ende Ihrer '.bashrc: export PATH = / path / to / java: $ PATH' hinzu.

Beliebte Java-Editoren

Zum Schreiben Ihrer Java-Programme benötigen Sie einen Texteditor. Es gibt viele hoch entwickelte IDEs auf dem Markt. Im Moment können Sie jedoch eine der folgenden Möglichkeiten in Betracht ziehen:

  • Notepad - Auf einem Windows-Computer können Sie einen einfachen Texteditor wie Notepad (für dieses Lernprogramm empfohlen) und TextPad verwenden.

  • Netbeans - Es handelt sich um eine Open-Source-Java-IDE, die kostenlos heruntergeladen werden kann https://www.netbeans.org/index.html.

  • Eclipse - Es ist auch eine Java-IDE, die von der Open-Source-Community von eclipse entwickelt wurde und von heruntergeladen werden kann https://www.eclipse.org/.

Laden Sie das Passay-Archiv herunter

Laden Sie die neueste Version der Passay-JAR-Datei aus dem Maven Repository herunter . In diesem Tutorial wird passay-1.4.0.jar heruntergeladen und in den Ordner C: \> passay kopiert.

Betriebssystem Archivname
Windows passay-1.4.0.jar
Linux passay-1.4.0.jar
Mac passay-1.4.0.jar

Passay-Umgebung einstellen

Stellen Sie die PASSAYUmgebungsvariable, die auf den Speicherort des Basisverzeichnisses verweist, in dem Passay jar auf Ihrem Computer gespeichert ist. Angenommen, wir haben passay-1.4.0.jar im Passay-Ordner auf verschiedenen Betriebssystemen wie folgt extrahiert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable PASSAY auf C: \ Passay
Linux export PASSAY = / usr / local / Passay
Mac export PASSAY = / Library / Passay

Setzen Sie die Variable CLASSPATH

Stellen Sie die CLASSPATHUmgebungsvariable, die auf den Passay-JAR-Speicherort verweist. Angenommen, Sie haben passay-1.4.0.jar im Passay-Ordner auf verschiedenen Betriebssystemen wie folgt gespeichert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable CLASSPATH auf% 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:.

Eine typische Kennwortrichtlinie enthält eine Reihe von Regeln zum Überprüfen eines Kennworts, wenn es den Organisationsregeln entspricht. Beachten Sie die folgenden Richtlinien:

  • Die Länge des Passworts sollte zwischen 8 und 16 Zeichen liegen.

  • Ein Passwort sollte keine Leerzeichen enthalten.

  • Ein Passwort sollte Folgendes enthalten: obere, untere, Ziffer und ein Symbol.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

Password validated.

Passay libary bietet eine MessageResolver-API zum Überschreiben der vom Validator verwendeten Standardnachrichten. Es kann den Pfad zu benutzerdefinierten Eigenschaften Datei nehmen und verwenden Sie die Standardtasten die gewünschte Nachricht zu überschreiben.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts und eine benutzerdefinierte Nachricht mithilfe der Passay-Bibliothek.

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

Ausgabe

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

Oft muss eine Kennwortrichtlinie, die die Einhaltung von Mindestregeln aus vorgegebenen Regeln wie einem Kennwort vorschreibt, mindestens M von N Regeln entsprechen. Beachten Sie die folgenden Richtlinien.

  • Die Länge des Passworts sollte zwischen 8 und 16 Zeichen liegen.

  • Ein Passwort sollte keine Leerzeichen enthalten.

  • Ein Passwort sollte mindestens drei der folgenden Elemente enthalten: obere, untere, Ziffer oder Symbol.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

Password validated.

PasswordGeneratorHilft beim Generieren eines Passworts unter Verwendung der angegebenen Richtlinie. Beachten Sie die folgenden Richtlinien:

  • Die Länge des Passworts sollte 8 Zeichen betragen.

  • Ein Passwort sollte Folgendes enthalten: obere, untere, Ziffer und ein Symbol.

Beispiel

Das folgende Beispiel zeigt die Generierung eines Kennworts für die oben genannte Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

?\DE~@c3

AllowedCharacterRuleErmöglicht die Angabe der Zeichen, die ein Kennwort enthalten kann. Betrachten Sie das folgende Beispiel.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

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

AllowedRegexRuleErmöglicht die Angabe des regulären Musters, das ein Kennwort erfüllen soll. Betrachten Sie das folgende Beispiel.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

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

CharacterRulehilft bei der Definition einer Reihe von Zeichen und Mindest-Nr. Anzahl der in einem Passwort erforderlichen Zeichen.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

Password validated.

LengthRule hilft bei der Definition der minimalen und maximalen Länge eines Passworts.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

Password validated.

CharacterCharacteristicsRule hilft bei der Definition, ob ein Passwort bestimmten N definierten Regeln entspricht oder nicht.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

Password validated.

LengthComplexityRulehilft bei der Definition der anwendbaren Regel für ein Passwort basierend auf seiner Länge. Beachten Sie die folgenden Richtlinien.

  • Wenn die Länge des Passworts zwischen 1 und 5 Zeichen liegt, sind nur Kleinbuchstaben zulässig.

  • Wenn die Länge des Passworts zwischen 6 und 8 Zeichen liegt, sind nur a, b und c zulässig.

Beispiel

Das folgende Beispiel zeigt die Validierung eines Kennworts anhand der oben genannten Richtlinie mithilfe der Passay-Bibliothek.

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

Ausgabe

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

IllegalCharacterRuleErmöglicht die Angabe der Zeichen, die in einem Kennwort nicht zulässig sind. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

NumberRangeRuleErmöglicht die Angabe des Nummernbereichs, der in einem Kennwort nicht zulässig ist. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

WhitespaceRuleErmöglicht die Angabe, dass die Leerzeichen in einem Kennwort nicht zulässig sind. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

DictionaryRuleErmöglicht die Überprüfung, ob bestimmte Wörter nicht als Kennwort angegeben sind. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

DictionarySubstringRuleErmöglicht die Überprüfung, ob bestimmte Wörter nicht Teil eines Passworts sind. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

HistoryRuleErmöglicht die Überprüfung, ob das angegebene Passwort in der nahen Vergangenheit nicht verwendet wurde. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

RepeatCharacterRegexRuleErmöglicht die Überprüfung, ob das angegebene Passwort wiederholte ASCII-Zeichen enthält. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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

UsernameRulestellt sicher, dass das Passwort nicht den Benutzernamen enthält. Betrachten Sie das folgende Beispiel.

Beispiel

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

Ausgabe

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