Passay - คู่มือฉบับย่อ

Passayเป็นไลบรารีการสร้างรหัสผ่านและการตรวจสอบที่ใช้ Java มีรายการคุณสมบัติที่ครอบคลุมเพื่อตรวจสอบความถูกต้อง / สร้างรหัสผ่านและสามารถกำหนดค่าได้สูง

ส่วนประกอบ Passay

Passay API มีส่วนประกอบหลัก 3 ส่วน

  • Rule - กฎอย่างน้อยหนึ่งกฎที่กำหนดชุดกฎนโยบายรหัสผ่าน

  • PasswordValidator - ส่วนประกอบตัวตรวจสอบความถูกต้องซึ่งตรวจสอบรหัสผ่านกับชุดกฎที่กำหนด

  • PasswordGenerator - ส่วนประกอบเครื่องกำเนิดไฟฟ้าที่สร้างรหัสผ่านเพื่อให้เป็นไปตามกฎที่กำหนด

ภาพรวมกฎ

กฎเป็นบล็อกพื้นฐานสำหรับการตรวจสอบรหัสผ่านและการสร้าง กฎมีสองประเภทกว้าง ๆ :

  • การจับคู่เชิงบวกกำหนดให้รหัสผ่านเป็นไปตามกฎ

  • การจับคู่เชิงลบปฏิเสธรหัสผ่านที่เป็นไปตามกฎ

คุณสมบัติ

ต่อไปนี้เป็นคุณสมบัติบางประการที่ห้องสมุด Passay มีให้

  • Password Validation- ไลบรารี Passay ช่วยในการบังคับใช้นโยบายรหัสผ่านโดยการตรวจสอบรหัสผ่านกับชุดกฎที่กำหนดได้ มีชุดกฎที่มีอยู่มากมายสำหรับกรณีการใช้งานทั่วไป สำหรับกรณีเพิ่มเติมจะมีอินเทอร์เฟซ Rule ที่เรียบง่ายเพื่อใช้กฎที่กำหนดเอง

  • Password Generation - มีชุดกฎที่กำหนดได้ซึ่งสามารถใช้ในการสร้างรหัสผ่านได้เช่นกัน

  • Command Line Tools - มีเครื่องมือในการบังคับใช้นโยบายรหัสผ่านโดยอัตโนมัติ

  • convenient - ใช้งานง่าย

  • Extensible - ส่วนประกอบ Passay ทั้งหมดสามารถขยายได้

  • Supports Internalization - ส่วนประกอบ Passay พร้อมสำหรับการทำให้เป็นสากล

การตั้งค่าสภาพแวดล้อมท้องถิ่น

หากคุณยังเต็มใจที่จะตั้งค่าสภาพแวดล้อมของคุณสำหรับภาษาการเขียนโปรแกรม Java ส่วนนี้จะแนะนำคุณเกี่ยวกับวิธีดาวน์โหลดและตั้งค่า Java บนเครื่องของคุณ โปรดปฏิบัติตามขั้นตอนด้านล่างเพื่อตั้งค่าสภาพแวดล้อม

Java SE เป็นอิสระที่มีอยู่จากการเชื่อมโยงดาวน์โหลด Java คุณจึงดาวน์โหลดเวอร์ชันที่อิงตามระบบปฏิบัติการของคุณ

ทำตามคำแนะนำเพื่อดาวน์โหลด Java และเรียกใช้ไฟล์ .exeเพื่อติดตั้ง Java บนเครื่องของคุณ เมื่อคุณติดตั้ง Java บนเครื่องของคุณแล้วคุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมเพื่อชี้ไปที่ไดเร็กทอรีการติดตั้งที่ถูกต้อง -

การตั้งค่า Path สำหรับ Windows 2000 / XP

เราสมมติว่าคุณได้ติดตั้ง Java ในไดเร็กทอรีc: \ Program Files \ java \ jdk -

  • คลิกขวาที่ 'My Computer' และเลือก 'Properties'

  • คลิกที่ปุ่ม 'ตัวแปรสภาพแวดล้อม' ใต้แท็บ 'ขั้นสูง'

  • ตอนนี้เปลี่ยนตัวแปร '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'

การตั้งค่า Path สำหรับ Linux, UNIX, Solaris, FreeBSD

ควรตั้งค่า PATH ตัวแปรสภาพแวดล้อมให้ชี้ไปที่ตำแหน่งที่ติดตั้งไบนารี Java อ้างถึงเอกสารประกอบเชลล์ของคุณหากคุณมีปัญหาในการดำเนินการนี้

ตัวอย่างเช่นหากคุณใช้ bash เป็นเชลล์ของคุณคุณจะต้องเพิ่มบรรทัดต่อไปนี้ต่อท้าย '.bashrc: export PATH = / path / to / java: $ PATH'

บรรณาธิการ Java ยอดนิยม

ในการเขียนโปรแกรม Java คุณต้องมีโปรแกรมแก้ไขข้อความ มี IDE ที่ซับซ้อนมากมายในตลาด แต่ในตอนนี้คุณสามารถพิจารณาข้อใดข้อหนึ่งต่อไปนี้ -

  • Notepad - บนเครื่อง Windows คุณสามารถใช้โปรแกรมแก้ไขข้อความง่ายๆเช่น Notepad (แนะนำสำหรับบทช่วยสอนนี้), TextPad

  • Netbeans - เป็น Java IDE ที่เป็นโอเพ่นซอร์สและฟรีซึ่งสามารถดาวน์โหลดได้จาก https://www.netbeans.org/index.html.

  • Eclipse - นอกจากนี้ยังเป็น Java IDE ที่พัฒนาโดยชุมชนโอเพนซอร์ส eclipse และสามารถดาวน์โหลดได้จาก https://www.eclipse.org/.

ดาวน์โหลด Passay Archive

ดาวน์โหลดเวอร์ชันล่าสุดของไฟล์ขวด Passay จากMaven Repository - ในบทช่วยสอนนี้ passay-1.4.0.jar จะถูกดาวน์โหลดและคัดลอกลงในโฟลเดอร์ C: \> passay

ระบบปฏิบัติการ ชื่อที่เก็บถาวร
Windows passay-1.4.0.jar
ลินุกซ์ passay-1.4.0.jar
Mac passay-1.4.0.jar

ตั้งค่าสภาพแวดล้อม Passay

ตั้งค่า PASSAYตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่เก็บโถ Passay ไว้ในเครื่องของคุณ สมมติว่าเราได้แยก passay-1.4.0.jar ในโฟลเดอร์ Passay บนระบบปฏิบัติการต่างๆดังนี้

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม PASSAY เป็น C: \ Passay
ลินุกซ์ ส่งออก 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; .;
ลินุกซ์ ส่งออก CLASSPATH = $ CLASSPATH: $ PASSAY / passay-1.4.0.jar:.
Mac ส่งออก 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 libary มี MessageResolver API เพื่อแทนที่ข้อความเริ่มต้นที่ใช้โดยโปรแกรมตรวจสอบความถูกต้อง สามารถใช้เส้นทางไปยังไฟล์คุณสมบัติที่กำหนดเองและใช้คีย์มาตรฐานเพื่อแทนที่ข้อความที่ต้องการ

ตัวอย่าง

ตัวอย่างด้านล่างแสดงการตรวจสอบรหัสผ่านและแสดงข้อความที่กำหนดเองโดยใช้ไลบรารี 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'.]