Symfony-তে User Provider এবং Encoder হল দুটি গুরুত্বপূর্ণ উপাদান যা Authentication (প্রমাণীকরণ) এবং Authorization (অধিকার প্রদান) সিস্টেমের মাধ্যমে সুরক্ষিত অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এই উপাদানগুলি ব্যবহারকারীদের যাচাই করা, তাদের ডেটাবেস থেকে ডেটা নিয়ে আসা এবং পাসওয়ার্ড এনক্রিপ্ট/ডি-এনক্রিপ্ট করতে সহায়ক। Symfony-এর SecurityBundle এই ফিচারগুলির সমন্বয় করতে ব্যবহৃত হয়।
User Provider
User Provider ব্যবহারকারী সম্পর্কিত ডেটা ডাটাবেস বা অন্য কোন স্টোরেজ থেকে লোড করার জন্য ব্যবহৃত হয়। এটি মূলত ব্যবহারকারী প্রমাণীকরণ প্রক্রিয়ার একটি অংশ, যেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করা হয়।
Symfony-তে ডিফল্টভাবে InMemoryUserProvider এবং EntityUserProvider উভয়ই ব্যবহার করা যেতে পারে। EntityUserProvider সাধারণত ডাটাবেসে সংরক্ষিত ব্যবহারকারীদের প্রোভাইড করার জন্য ব্যবহৃত হয়।
User Provider কনফিগারেশন
Symfony-তে security.yaml ফাইলের মাধ্যমে User Provider কনফিগার করা হয়। এখানে আপনি কিভাবে এবং কোথা থেকে ব্যবহারকারী ডেটা প্রাপ্ত করবেন তা নির্ধারণ করেন।
Entity User Provider উদাহরণ:
যদি আপনি Doctrine ORM ব্যবহার করেন, তাহলে আপনি Entity থেকে ব্যবহারকারী তথ্য নিয়ে আসতে পারেন।
# config/packages/security.yaml
security:
providers:
app_user_provider:
entity:
class: App\Entity\User
property: username
এখানে class নির্দেশ করে যে আপনি App\Entity\User Entity ব্যবহার করছেন এবং property নির্দেশ করে যে এটি username-এর মাধ্যমে ব্যবহারকারী প্রাপ্ত করবে।
User Encoder (পাসওয়ার্ড এনকোডার)
Encoder হলো সেই উপাদান যা ব্যবহারকারীর পাসওয়ার্ড এনক্রিপ্ট (এনকোড) এবং ডি-এনক্রিপ্ট করার কাজ করে। Symfony-তে পাসওয়ার্ড এনক্রিপশন সাধারণত bcrypt, argon2, বা plain text পদ্ধতিতে করা হয়। পাসওয়ার্ড এনক্রিপশন/ডি-এনক্রিপশন জন্য Symfony-তে PasswordEncoderInterface ব্যবহৃত হয়।
Encoder কনফিগারেশন উদাহরণ:
Symfony 5 এবং তার পরবর্তী সংস্করণে পাসওয়ার্ড এনকোডার কনফিগার করতে security.yaml ফাইলের মাধ্যমে করা হয়। Symfony-তে পাসওয়ার্ড এনকোডার সাধারণত BCrypt অথবা Argon2 ব্যবহার করে।
BCrypt এনকোডার কনফিগারেশন:
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
এখানে App\Entity\User নির্দেশ করে যে User Entity এর জন্য পাসওয়ার্ড এনকোডিং BCrypt অ্যালগরিদম ব্যবহার করবে।
Argon2 এনকোডার কনফিগারেশন:
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: argon2i
Argon2i একটি শক্তিশালী এনকোডিং অ্যালগরিদম যা আধুনিক এবং নিরাপদ। এটি BCrypt থেকে বেশি সুরক্ষিত, তবে কম্পিউটেশনালভাবে একটু বেশি ব্যয়বহুল।
Plain Text Encoder (প্লেইন টেক্সট এনকোডার)
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: plaintext
এটি একটি অরক্ষিত এনকোডিং পদ্ধতি। এটি সাধারণত নিরাপদ নয় এবং শুধুমাত্র পরীক্ষার উদ্দেশ্যে ব্যবহৃত হয়।
ব্যবহারকারী যাচাইকরণ (User Authentication)
Symfony-তে authentication বা প্রমাণীকরণ ব্যবস্থা করার জন্য সাধারণত firewall এবং authentication provider ব্যবহার করা হয়। এই সিস্টেমের মাধ্যমে ব্যবহারকারীর ক্রেডেনশিয়াল যাচাই করা হয় এবং তারপর অ্যাক্সেস কন্ট্রোল প্রদান করা হয়।
Authentication Provider কনফিগারেশন উদাহরণ:
# config/packages/security.yaml
security:
firewalls:
main:
pattern: ^/
form_login:
login_path: login
check_path: login
logout:
path: logout
# user provider configuration
provider: app_user_provider
এখানে form_login ব্যবহারকারীকে ফর্মের মাধ্যমে লগইন করার অনুমতি দেয়, এবং provider নির্দেশ করে যে app_user_provider ব্যবহার করা হবে।
সারাংশ
- User Provider: এটি ব্যবহারকারী সম্পর্কিত ডেটা সংগ্রহ করে এবং ডাটাবেস বা অন্য কোনো স্টোরেজ সিস্টেম থেকে তথ্য নিয়ে আসে।
- Password Encoder: এটি পাসওয়ার্ড এনক্রিপ্ট এবং ডি-এনক্রিপ্ট করার কাজ করে। Symfony-তে এটি
bcrypt,argon2, এবংplain textঅ্যালগরিদম ব্যবহার করে। - security.yaml: Symfony-তে এই দুটি উপাদান কনফিগার করার জন্য মূল ফাইল।
- User Authentication: Firewall এবং Authentication provider ব্যবহার করে ব্যবহারকারীদের সুরক্ষিত লগইন এবং প্রমাণীকরণ নিশ্চিত করা হয়।
Symfony-তে User Provider এবং Encoder সঠিকভাবে কনফিগার করা হলে এটি একটি শক্তিশালী, নিরাপদ এবং স্কেলযোগ্য Authentication সিস্টেম তৈরি করতে সহায়ক।
Read more