প্যাসে (Passay) লাইব্রেরিতে Custom Rule তৈরি করার প্রয়োজনীয়তা এবং কিভাবে এটি তৈরি করবেন তা নিয়ে বিস্তারিত আলোচনা করা হলো।
Custom Rule তৈরি করার প্রয়োজনীয়তা
যখন আপনি Passay ব্যবহার করেন, সাধারণত কিছু সাধারণ পাসওয়ার্ড যাচাই নিয়ম (যেমন: দৈর্ঘ্য, বড় হাতের অক্ষর, সংখ্যা, বিশেষ অক্ষর ইত্যাদি) ব্যবহার করা হয়। তবে কিছু সময়ে আপনার বিশেষ ধরনের পাসওয়ার্ড নিয়ম প্রয়োজন হতে পারে যা স্ট্যান্ডার্ড নিয়মের বাইরে থাকে। যেমন:
- নির্দিষ্ট প্যাটার্নে অক্ষর থাকতে হবে (উদাহরণস্বরূপ: "abc123" ধরনের পাসওয়ার্ড নিষিদ্ধ করা)
- কিছু নির্দিষ্ট অক্ষর বাদ দেওয়া (যেমন, "admin", "password" বা অন্য পাসওয়ার্ড যা সাধারণভাবে নিরাপদ নয়)
- বিশেষ শর্ত বা কন্ডিশন অনুযায়ী পাসওয়ার্ড যাচাই করা।
এক্ষেত্রে Custom Rule তৈরি করার প্রয়োজনীয়তা দেখা দেয়। Custom Rule আপনাকে বিশেষ শর্ত অনুসারে পাসওয়ার্ড যাচাই করার ক্ষমতা দেয়।
Custom Rule তৈরির প্রক্রিয়া
Passay-তে একটি Custom Rule তৈরি করতে হলে, আপনাকে Rule ইন্টারফেস ইমপ্লিমেন্ট করতে হবে। এখানে একটি উদাহরণ দেখানো হচ্ছে যা একটি কাস্টম নিয়ম তৈরি করবে যা নির্দিষ্ট শব্দ পাসওয়ার্ডে ব্যবহৃত হলে তাতে ত্রুটি প্রদর্শন করবে।
Custom Rule তৈরি করার উদাহরণ
ধরা যাক, আপনি এমন একটি নিয়ম তৈরি করতে চান যা পাসওয়ার্ডে "admin" শব্দের ব্যবহার নিষিদ্ধ করবে।
import org.passay.*;
public class NoAdminRule implements Rule {
@Override
public RuleResult validate(PasswordData passwordData) {
// পাসওয়ার্ডের মধ্যে "admin" শব্দটি খুঁজে বের করা
if (passwordData.getPassword().toLowerCase().contains("admin")) {
// যদি "admin" থাকে তবে এটি অবৈধ হিসেবে চিহ্নিত হবে
return new RuleResult(false, "পাসওয়ার্ডে 'admin' শব্দটি ব্যবহার করা যাবে না!");
}
// অন্যথায় পাসওয়ার্ডটি বৈধ
return new RuleResult(true);
}
@Override
public String getMessageKey() {
return "NO_ADMIN";
}
}
Custom Rule ব্যবহার করার জন্য PasswordValidator সেটআপ
এখন আপনি তৈরি করা NoAdminRule কাস্টম রুলটি ব্যবহার করতে পারেন।
import org.passay.*;
import java.util.Arrays;
public class CustomRuleExample {
public static void main(String[] args) {
// PasswordValidator সেটআপ
PasswordValidator validator = new PasswordValidator(Arrays.asList(
new LengthRule(8, 16), // দৈর্ঘ্য 8 থেকে 16 অক্ষর
new UppercaseCharacterRule(1), // অন্তত 1 বড় হাতের অক্ষর
new DigitCharacterRule(1), // অন্তত 1 সংখ্যা
new SpecialCharacterRule(1), // অন্তত 1 বিশেষ অক্ষর
new NoAdminRule() // কাস্টম NoAdminRule যুক্ত করা
));
// পাসওয়ার্ড যাচাই
String password = "admin1234";
RuleResult result = validator.validate(new PasswordData(password));
if (result.isValid()) {
System.out.println("পাসওয়ার্ড বৈধ!");
} else {
System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
validator.getMessages(result).forEach(System.out::println); // ত্রুটি বার্তা প্রিন্ট
}
}
}
ব্যাখ্যা:
- Custom Rule (
NoAdminRule):- এটি
Ruleইন্টারফেস ইমপ্লিমেন্ট করে একটি কাস্টম পাসওয়ার্ড যাচাই নিয়ম তৈরি করেছে। যদি পাসওয়ার্ডে "admin" শব্দটি থাকে, এটি একটি ত্রুটি বার্তা দেয়। getMessageKey()মেথডটি কাস্টম বার্তা নির্ধারণ করতে ব্যবহৃত হয়।
- এটি
- PasswordValidator:
PasswordValidator-এ একাধিক নিয়ম যোগ করা হয়েছে, যার মধ্যে কাস্টমNoAdminRuleব্যবহার করা হয়েছে।
- Password Validation:
- পাসওয়ার্ডটি যাচাই করার পরে, যদি পাসওয়ার্ড অবৈধ হয় (যেমন "admin1234"), তবে কাস্টম ত্রুটি বার্তা প্রদর্শিত হবে।
আউটপুট:
পাসওয়ার্ড অবৈধ। কারণ:
পাসওয়ার্ডে 'admin' শব্দটি ব্যবহার করা যাবে না!
Maven Dependency:
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.6.0</version>
</dependency>
অন্যান্য কাস্টম রুলের উদাহরণ:
- Character Pattern Rule:
পাসওয়ার্ডে কিছু নির্দিষ্ট প্যাটার্ন থাকতে হবে, যেমন "abc123" নিষিদ্ধ করা। - Dictionary Words Rule:
পাসওয়ার্ডে কিছু সাধারণ শব্দ বা নাম ব্যবহার নিষিদ্ধ করা। - Custom Length Rule:
একটি কাস্টম দৈর্ঘ্য নিয়ম তৈরি করা যেখানে পাসওয়ার্ডের দৈর্ঘ্য নির্দিষ্ট প্যাটার্ন অনুসরণ করতে হবে।
সংক্ষেপে:
কাস্টম রুল তৈরি করার মাধ্যমে আপনি পাসওয়ার্ডের নিরাপত্তা নীতি অনুযায়ী বিশেষ শর্তাবলী যোগ করতে পারেন। Passay আপনাকে কাস্টম রুলগুলি তৈরি এবং ব্যবহার করার সুবিধা দেয়, যা আপনার অ্যাপ্লিকেশনের নিরাপত্তা বাড়াতে সহায়ক।