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