Skill

Passay এর Integration

প্যাসে (Passay) - Java Technologies

498

Passay Java Technologies-এ Passay এর Integration অত্যন্ত সহজ, এবং এটি Java অ্যাপ্লিকেশনগুলিতে পাসওয়ার্ড পলিসি যাচাই এবং নিরাপত্তা নিয়ন্ত্রণের জন্য একটি শক্তিশালী উপায়। Passay ইন্টিগ্রেশন করার জন্য সাধারণত Maven বা Gradle এর মাধ্যমে এটি ইনস্টল করা হয়, এবং তারপর কোডে ব্যবহার করা হয়।

Passay Integration Steps:

1. Maven Dependency Setup:

প্রথমে, Passay লাইব্রেরি Maven প্রকল্পে যুক্ত করতে হবে। যদি আপনার প্রকল্প Maven ব্যবহার করে, তাহলে আপনাকে pom.xml ফাইলে Passay এর ডিপেনডেন্সি যুক্ত করতে হবে।

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.6.0</version>
</dependency>

এটা নিশ্চিত করে যে Passay লাইব্রেরি আপনার প্রকল্পে সঠিকভাবে অন্তর্ভুক্ত হয়েছে।

2. Basic Passay Setup (Password Validation):

Passay এর সাহায্যে একটি পাসওয়ার্ড পলিসি তৈরি করতে পারেন এবং পাসওয়ার্ড যাচাই করার জন্য PasswordValidator ক্লাস ব্যবহার করতে পারেন।

import org.passay.*;
import java.util.Arrays;

public class PassayExample {
    public static void main(String[] args) {
        // Passay Validator তৈরি
        PasswordValidator validator = new PasswordValidator(Arrays.asList(
            new LengthRule(8, 16),           // পাসওয়ার্ডের দৈর্ঘ্য 8-16 অক্ষর
            new UppercaseCharacterRule(1),   // অন্তত একটি বড় হাতের অক্ষর
            new DigitCharacterRule(1),       // অন্তত একটি সংখ্যা
            new SpecialCharacterRule(1),     // অন্তত একটি স্পেশাল ক্যারেক্টার
            new WhitespaceRule()             // পাসওয়ার্ডে ফাঁকা স্থান নিষিদ্ধ
        ));

        String password = "MySecure@123";

        RuleResult result = validator.validate(new PasswordData(password));

        // পাসওয়ার্ড যদি বৈধ হয়
        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ!");
        } else {
            System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
            validator.getMessages(result).forEach(System.out::println);
        }
    }
}

এখানে, PasswordValidator ব্যবহার করা হয়েছে যাতে এটি একটি পাসওয়ার্ড যাচাই করে এবং পাসওয়ার্ড যদি পলিসি অনুযায়ী বৈধ না হয়, তবে এটি একটি ফিডব্যাক প্রদান করে।

3. Custom Password Policy:

আপনি আপনার নিজস্ব পাসওয়ার্ড পলিসি তৈরি করতে পারেন, যেমন ন্যূনতম দৈর্ঘ্য, বড় হাতের অক্ষর, সংখ্যা, স্পেশাল ক্যারেক্টার ইত্যাদি। উদাহরণস্বরূপ:

PasswordValidator customValidator = new PasswordValidator(Arrays.asList(
    new LengthRule(10, 20),                // দৈর্ঘ্য 10 থেকে 20
    new UppercaseCharacterRule(1),          // অন্তত ১টি বড় হাতের অক্ষর
    new DigitCharacterRule(2),              // অন্তত ২টি সংখ্যা
    new SpecialCharacterRule(1),            // অন্তত ১টি স্পেশাল ক্যারেক্টার
    new UsernameRule()                      // পাসওয়ার্ডে ব্যবহারকারীর নাম থাকা যাবে না
));

4. Feedback and Messages:

পাসওয়ার্ড যদি অবৈধ হয়, তবে Passay সংশ্লিষ্ট ভুল বার্তা প্রদান করে। আপনি এই বার্তাগুলি ব্যবহারকারীদের কাছে পাঠাতে পারেন, যেমন:

if (result.isValid()) {
    System.out.println("পাসওয়ার্ড বৈধ!");
} else {
    System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
    for (String msg : validator.getMessages(result)) {
        System.out.println(msg);
    }
}

5. Using Passay with Spring Framework (Optional):

যদি আপনি Spring ব্যবহার করেন, আপনি Passay কে Spring Bean হিসেবে নিবন্ধিত করে এবং সার্ভিস লেয়ারে ব্যবহার করতে পারেন। যেমন:

@Service
public class PasswordValidatorService {
    private final PasswordValidator validator;

    @Autowired
    public PasswordValidatorService() {
        this.validator = new PasswordValidator(Arrays.asList(
            new LengthRule(8, 16),
            new UppercaseCharacterRule(1),
            new DigitCharacterRule(1),
            new SpecialCharacterRule(1),
            new WhitespaceRule()
        ));
    }

    public boolean validatePassword(String password) {
        RuleResult result = validator.validate(new PasswordData(password));
        return result.isValid();
    }
}

এভাবে, Passay ব্যবহারকারীর পাসওয়ার্ড নিরাপত্তা যাচাই করার জন্য একত্রিত করা যেতে পারে। এটি PasswordValidator এবং Rule ভিত্তিক নিয়ম ব্যবহার করে পাসওয়ার্ডে শক্তিশালী নিরাপত্তা নীতি প্রয়োগ করতে সহায়ক।

Content added By

Spring Boot প্রজেক্টে Passay লাইব্রেরি ইন্টিগ্রেট করার জন্য, আপনি পাসওয়ার্ড ভ্যালিডেশন কনফিগার করে একটি সহজ এবং নিরাপদ সিস্টেম তৈরি করতে পারেন। নিচে Passay এর Spring Boot প্রজেক্টে ইন্টিগ্রেশন করার জন্য পদক্ষেপগুলি দেয়া হয়েছে।

১. Maven Dependency যোগ করা

প্রথমে, আপনার pom.xml ফাইলে Passay লাইব্রেরির dependency যোগ করুন।

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.6.0</version>
</dependency>

২. Passay Configuration ক্লাস তৈরি করা

Spring Boot অ্যাপ্লিকেশনে Passay কনফিগার করার জন্য একটি configuration ক্লাস তৈরি করতে হবে, যেখানে আপনি পাসওয়ার্ডের ভ্যালিডেশন নিয়মগুলো সেট করবেন।

import org.passay.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

@Configuration
public class PassayConfig {

    @Bean
    public PasswordValidator passwordValidator() {
        return new PasswordValidator(Arrays.asList(
            new LengthRule(8, 16),           // পাসওয়ার্ডের দৈর্ঘ্য 8-16 অক্ষর
            new UppercaseCharacterRule(1),   // অন্তত একটি বড় হাতের অক্ষর
            new DigitCharacterRule(1),       // অন্তত একটি সংখ্যা
            new SpecialCharacterRule(1),     // অন্তত একটি স্পেশাল ক্যারেক্টার
            new WhitespaceRule()             // পাসওয়ার্ডে ফাঁকা জায়গা নিষিদ্ধ
        ));
    }
}

এটি একটি PasswordValidator Bean তৈরি করবে যা Spring Context-এ ব্যবহৃত হবে।

৩. পাসওয়ার্ড ভ্যালিডেশন সেবা তৈরি করা

এখন একটি সেবা (service) তৈরি করা যেতে পারে যা Passay-এর PasswordValidator ব্যবহার করে পাসওয়ার্ড যাচাই করবে।

import org.passay.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PasswordValidationService {

    @Autowired
    private PasswordValidator passwordValidator;

    public boolean validatePassword(String password) {
        RuleResult result = passwordValidator.validate(new PasswordData(password));
        return result.isValid();
    }

    public String getValidationMessages(String password) {
        RuleResult result = passwordValidator.validate(new PasswordData(password));
        return String.join(", ", passwordValidator.getMessages(result));
    }
}

এই সেবাটি validatePassword() এবং getValidationMessages() মেথডগুলো প্রদান করবে। প্রথমটি পাসওয়ার্ড যাচাই করবে এবং দ্বিতীয়টি যদি পাসওয়ার্ডটি অবৈধ হয় তবে সেই সম্পর্কিত বার্তা প্রদান করবে।

৪. REST Controller তৈরি করা

এখন, Spring Boot এর একটি REST Controller তৈরি করুন যাতে ব্যবহারকারীরা HTTP অনুরোধের মাধ্যমে পাসওয়ার্ড যাচাই করতে পারে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/password")
public class PasswordValidationController {

    @Autowired
    private PasswordValidationService passwordValidationService;

    @PostMapping("/validate")
    public String validatePassword(@RequestParam String password) {
        if (passwordValidationService.validatePassword(password)) {
            return "পাসওয়ার্ড বৈধ!";
        } else {
            return "পাসওয়ার্ড অবৈধ: " + passwordValidationService.getValidationMessages(password);
        }
    }
}

এটি একটি HTTP POST API তৈরি করবে, যা /api/password/validate রুটে পাসওয়ার্ড গ্রহণ করবে এবং সেটির ভ্যালিডেশন ফলাফল ফিরিয়ে দেবে।

৫. Spring Boot অ্যাপ্লিকেশন চালু করা

আপনার Spring Boot অ্যাপ্লিকেশন চালু করুন এবং API-টি পরীক্ষা করুন। যদি আপনি এটি ব্যবহার করতে চান, curl বা Postman এর মাধ্যমে POST অনুরোধ পাঠাতে পারেন।

উদাহরণ POST Request:

curl -X POST "http://localhost:8080/api/password/validate?password=MySecure@123"

যদি পাসওয়ার্ডটি বৈধ হয়, এটি "পাসওয়ার্ড বৈধ!" ফিরিয়ে দেবে। আর যদি অবৈধ হয়, পাসওয়ার্ডের ত্রুটির বার্তা প্রদান করবে।

৬. কিছু অতিরিক্ত কনফিগারেশন

আপনি যদি চান পাসওয়ার্ড ভ্যালিডেশন আরও কাস্টমাইজড করতে (যেমন, বিশেষ ধরনের চরিত্র বা অতিরিক্ত নিয়ম) তাহলে Passay এর বিভিন্ন নিয়ম ব্যবহার করতে পারেন যেমন:

  • CharacterRule (শুধুমাত্র নির্দিষ্ট অক্ষরগুলি অনুমোদিত)
  • DictionaryRule (অবৈধ পাসওয়ার্ডের জন্য একটি শব্দকোষ ফাইল ব্যবহার)

উপসংহার

এই পদক্ষেপগুলি অনুসরণ করে আপনি সহজে Spring Boot প্রজেক্টে Passay ইন্টিগ্রেট করতে পারেন এবং পাসওয়ার্ড ভ্যালিডেশন সিস্টেম তৈরি করতে পারেন। Passay এর মাধ্যমে নিরাপদ পাসওয়ার্ড নীতি নির্ধারণ করতে পারবেন এবং Spring Boot অ্যাপ্লিকেশনে তা সহজে প্রয়োগ করতে পারবেন।

Content added By

Spring Security এবং Passay সংযুক্ত করার মাধ্যমে আপনি Spring অ্যাপ্লিকেশনগুলিতে পাসওয়ার্ড নিরাপত্তা এবং পলিসি ব্যবস্থাপনাকে আরও শক্তিশালী করতে পারেন। Spring Security সাধারণত পাসওয়ার্ড যাচাইয়ের জন্য কাস্টম পাসওয়ার্ড ভ্যালিডেশন যুক্ত করার একটি সহজ উপায় প্রদান করে, এবং Passay এই কাজটি সহজে এবং নিরাপদভাবে করতে সহায়ক।

এখানে আমরা দেখব কীভাবে Spring Security এর সাথে Passay ব্যবহার করে কাস্টম পাসওয়ার্ড ভ্যালিডেশন যোগ করা যায়।

1. Maven Dependency যুক্ত করা

প্রথমে, আপনার Spring Boot প্রকল্পে Passay এবং Spring Security এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন।

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.6.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. Passay Password Validation Configuration

Spring Security এর পাসওয়ার্ড যাচাই প্রক্রিয়ায় Passay ব্যবহার করতে, একটি কাস্টম পাসওয়ার্ড ভ্যালিডেটর তৈরি করতে হবে। এই ভ্যালিডেটরটি Passay এর PasswordValidator এবং Rule ব্যবহার করবে।

import org.passay.*;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
public class PassayPasswordValidator implements PasswordEncoder {

    private final PasswordValidator passwordValidator;

    public PassayPasswordValidator() {
        passwordValidator = new PasswordValidator(Arrays.asList(
            new LengthRule(8, 16),            // পাসওয়ার্ডের দৈর্ঘ্য 8-16 অক্ষর
            new UppercaseCharacterRule(1),   // অন্তত একটি বড় হাতের অক্ষর
            new DigitCharacterRule(1),       // অন্তত একটি সংখ্যা
            new SpecialCharacterRule(1),     // অন্তত একটি স্পেশাল ক্যারেক্টার
            new WhitespaceRule()             // ফাঁকা স্থান নিষিদ্ধ
        ));
    }

    @Override
    public String encode(CharSequence rawPassword) {
        // এখানে Passay এর password validation করা হবে
        RuleResult result = passwordValidator.validate(new PasswordData(rawPassword.toString()));

        if (result.isValid()) {
            // পাসওয়ার্ড বৈধ হলে এটিকে এনকোড করুন
            return rawPassword.toString(); // এই উদাহরণে আমরা সরাসরি পাসওয়ার্ড ফিরিয়ে দিচ্ছি (প্রকৃত অ্যাপ্লিকেশনে এনকোডিং করতে হবে)
        } else {
            // পাসওয়ার্ড অবৈধ হলে ত্রুটির বার্তা পাঠান
            throw new IllegalArgumentException("পাসওয়ার্ড অবৈধ। কারণ: " + passwordValidator.getMessages(result));
        }
    }

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        // সাধারণত পাসওয়ার্ড ম্যাচিংয়ের জন্য এনকোডেড পাসওয়ার্ড চেক করুন
        return rawPassword.toString().equals(encodedPassword);
    }
}

3. Spring Security Configuration

এখন Spring Security কনফিগারেশন ফাইল তৈরি করতে হবে, যেখানে PassayPasswordValidator ব্যবহার করা হবে। এতে আপনার পাসওয়ার্ড যাচাইয়ের জন্য Passay এর কাস্টম ভ্যালিডেটর সংযুক্ত হবে।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final PassayPasswordValidator passayPasswordValidator;

    public SecurityConfig(PassayPasswordValidator passayPasswordValidator) {
        this.passayPasswordValidator = passayPasswordValidator;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/login", "/signup").permitAll()
                .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
            .and()
            .logout()
                .permitAll();
    }

    @Override
    @Bean
    public UserDetailsService userDetailsService() {
        return username -> User.builder()
                .username(username)
                .password(passayPasswordValidator.encode("Test@1234")) // এখানে পাসওয়ার্ড ভ্যালিডেশন
                .roles("USER")
                .build();
    }

    @Override
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();  // বাস্তব এনকোডিং জন্য BCrypt
    }
}

4. Custom Sign Up Controller

এখন, আপনি যদি একটি সাইন আপ ফর্ম তৈরি করেন যেখানে ব্যবহারকারীরা তাদের পাসওয়ার্ড নিবন্ধন করতে পারবেন, তখন সাইন আপ প্রসেসের সময় PassayPasswordValidator ব্যবহার হবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class SignUpController {

    @Autowired
    private PassayPasswordValidator passayPasswordValidator;

    @GetMapping("/signup")
    public String showSignUpForm() {
        return "signup";
    }

    @PostMapping("/signup")
    public String signUp(@RequestParam("password") String password, Model model) {
        try {
            passayPasswordValidator.encode(password);  // পাসওয়ার্ড যাচাই করুন
            model.addAttribute("message", "পাসওয়ার্ড সফলভাবে নিবন্ধিত হয়েছে!");
            return "signup-success";
        } catch (IllegalArgumentException e) {
            model.addAttribute("error", e.getMessage());
            return "signup";
        }
    }
}

5. HTML Forms

Signup Form (signup.html):

<form action="/signup" method="post">
    <label for="password">পাসওয়ার্ড:</label>
    <input type="password" id="password" name="password" required>
    <button type="submit">নিবন্ধন করুন</button>
</form>

Signup Success Page (signup-success.html):

<h1>পাসওয়ার্ড সফলভাবে নিবন্ধিত হয়েছে!</h1>

উপসংহার:

এই উদাহরণে, আমরা দেখেছি কীভাবে Passay এবং Spring Security একত্রে ব্যবহার করে কাস্টম পাসওয়ার্ড ভ্যালিডেশন যুক্ত করা যায়। Spring Security ব্যবহারকারীর পাসওয়ার্ড যাচাইয়ের জন্য Passay এর কাস্টম রুল ব্যবহার করার মাধ্যমে আপনার সিস্টেমে শক্তিশালী পাসওয়ার্ড পলিসি প্রয়োগ করা সম্ভব।

Content added By

Passay এবং Spring Security ইন্টিগ্রেশন করা একটি শক্তিশালী পাসওয়ার্ড নিরাপত্তা ব্যবস্থা তৈরি করতে সাহায্য করে। Passay-এর পাসওয়ার্ড পলিসি ব্যবস্থাপনা এবং Spring Security-এর অ্যাক্সেস কন্ট্রোল এবং নিরাপত্তা বৈশিষ্ট্যগুলি একত্রে ব্যবহার করা হয়। নিচে Passay এবং Spring Security এর ইন্টিগ্রেশন সম্পর্কিত একটি উদাহরণ দেওয়া হলো।


Passay এবং Spring Security Integration উদাহরণ

এখানে একটি উদাহরণ দেখানো হচ্ছে, যেখানে Spring Security ব্যবহার করে একটি সিকিউরড অ্যাপ্লিকেশন তৈরি করা হবে এবং Passay ব্যবহার করা হবে পাসওয়ার্ডের নিয়ম যাচাই করার জন্য।


Step 1: Maven Dependencies

প্রথমে আপনাকে Passay এবং Spring Security এর জন্য Maven dependencies আপনার pom.xml ফাইলে যোগ করতে হবে।

<dependencies>
    <!-- Passay dependency -->
    <dependency>
        <groupId>org.passay</groupId>
        <artifactId>passay</artifactId>
        <version>1.6.0</version>
    </dependency>

    <!-- Spring Security dependency -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.8.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>5.8.0</version>
    </dependency>
</dependencies>

Step 2: Passay Password Validation Service

এখানে Passay ব্যবহার করে পাসওয়ার্ড যাচাই করার একটি সার্ভিস তৈরি করা হবে, যা Spring Security এর ইউজার রেজিস্ট্রেশন অথবা পাসওয়ার্ড চেঞ্জ সময়ে কাজ করবে।

import org.passay.*;
import org.springframework.stereotype.Service;

import java.util.Arrays;

@Service
public class PasswordValidationService {

    private final PasswordValidator validator;

    public PasswordValidationService() {
        this.validator = new PasswordValidator(Arrays.asList(
            new LengthRule(8, 16),               // দৈর্ঘ্য 8 থেকে 16 অক্ষর
            new UppercaseCharacterRule(1),       // অন্তত 1 বড় হাতের অক্ষর
            new DigitCharacterRule(1),           // অন্তত 1 সংখ্যা
            new SpecialCharacterRule(1),         // অন্তত 1 বিশেষ অক্ষর
            new WhitespaceRule()                 // ফাঁকা স্থান নিষিদ্ধ
        ));
    }

    public boolean validatePassword(String password) {
        RuleResult result = validator.validate(new PasswordData(password));
        return result.isValid();
    }

    public String getValidationMessages(String password) {
        RuleResult result = validator.validate(new PasswordData(password));
        return String.join(", ", validator.getMessages(result));
    }
}

এই PasswordValidationService ক্লাসে Passay এর PasswordValidator ব্যবহার করা হয়েছে পাসওয়ার্ড যাচাই করতে এবং কোন ত্রুটি বার্তা থাকলে তা ফিরিয়ে দিতে।


Step 3: Spring Security Configuration

এখন Spring Security কনফিগারেশন তৈরি করবো। এখানে একটি কাস্টম AuthenticationManager ব্যবহৃত হবে, যাতে পাসওয়ার্ড যাচাই করার জন্য Passay সার্ভিসটি ব্যবহার করা হয়।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final PasswordValidationService passwordValidationService;

    public SecurityConfig(PasswordValidationService passwordValidationService) {
        this.passwordValidationService = passwordValidationService;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/register", "/login").permitAll() // রেজিস্ট্রেশন ও লগইন পেজের জন্য
                .anyRequest().authenticated() // অন্যান্য রিকোয়েস্টের জন্য প্রমাণীকরণ প্রয়োজন
            .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
            .and()
            .logout()
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }

    @Bean
    public AuthenticationProvider authenticationProvider() {
        return new CustomAuthenticationProvider(passwordValidationService);
    }
}

Step 4: Custom Authentication Provider

এখন, একটি কাস্টম AuthenticationProvider তৈরি করা হবে যা পাসওয়ার্ড যাচাই করবে Passay ব্যবহার করে।

import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;

@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {

    private final PasswordValidationService passwordValidationService;

    public CustomAuthenticationProvider(PasswordValidationService passwordValidationService) {
        this.passwordValidationService = passwordValidationService;
    }

    @Override
    public Authentication authenticate(Authentication authentication) {
        String username = authentication.getName();
        String password = authentication.getCredentials().toString();

        // Passay দিয়ে পাসওয়ার্ড যাচাই করা
        if (!passwordValidationService.validatePassword(password)) {
            throw new BadCredentialsException("পাসওয়ার্ড শর্ত পূরণ করে না।");
        }

        // ইউজার প্রমাণীকৃত হলে, একটি Authentication টোকেন তৈরি করা
        return new UsernamePasswordAuthenticationToken(
                new User(username, password, AuthorityUtils.NO_AUTHORITIES),
                password, AuthorityUtils.NO_AUTHORITIES);
    }

    @Override
    public boolean supports(Class<?> authentication) {
        return authentication.equals(UsernamePasswordAuthenticationToken.class);
    }
}

Step 5: Controller Example

এখানে একটি উদাহরণ কন্ট্রোলার দেখানো হচ্ছে যেখানে ইউজার রেজিস্ট্রেশন এবং পাসওয়ার্ড যাচাই করা হবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    private final PasswordValidationService passwordValidationService;

    @Autowired
    public UserController(PasswordValidationService passwordValidationService) {
        this.passwordValidationService = passwordValidationService;
    }

    @PostMapping("/register")
    public String registerUser(@RequestParam String username, @RequestParam String password, Model model) {
        // পাসওয়ার্ড যাচাই করা
        if (passwordValidationService.validatePassword(password)) {
            model.addAttribute("message", "রেজিস্ট্রেশন সফল!");
            return "success";
        } else {
            model.addAttribute("error", passwordValidationService.getValidationMessages(password));
            return "register";
        }
    }
}

Step 6: Application Properties (Optional)

Spring Security এর জন্য কনফিগারেশন করতে আপনার application.properties বা application.yml ফাইল ব্যবহার করতে পারেন।


Conclusion:

এই উদাহরণে, Passay এবং Spring Security একত্রে ব্যবহার করা হয়েছে, যেখানে Passay পাসওয়ার্ড যাচাই করার জন্য কাস্টম রুল এবং পলিসি ব্যবহার করছে এবং Spring Security প্রমাণীকরণ এবং নিরাপত্তা নিশ্চিত করছে। এইভাবে আপনি একটি শক্তিশালী পাসওয়ার্ড নিরাপত্তা ব্যবস্থা তৈরি করতে পারবেন যা আপনার অ্যাপ্লিকেশনে উচ্চ সিকিউরিটি প্রদান করবে।

Content added By
Promotion

Are you sure to start over?

Loading...