FastAPI-তে JWT Authentication
Authentication জিজ্ঞাসা করে "আপনি কে?" Authorization জিজ্ঞাসা করে "আপনি কী করতে পারেন?"
আপনি যদি নিরাপত্তা ছাড়া একটি AI প্ল্যাটফর্ম তৈরি করেন, তবে যে কেউ ব্যক্তিগত ডেটা অ্যাক্সেস করতে পারে। তারা ব্যবহারকারীর প্রোফাইল পরিবর্তন করতে পারে বা শিক্ষার্থীর অগ্রগতি দেখতে পারে। আপনাকে অবশ্যই আপনার রিসোর্সগুলো সুরক্ষিত রাখতে হবে।
JWT (JSON Web Token) এটি সমাধান করে। প্রতিবার রিকোয়েস্টের সাথে পাসওয়ার্ড পাঠানোর পরিবর্তে, ব্যবহারকারী একটি নিরাপদ টোকেন পাঠায়।
ওয়ার্কফ্লো (Workflow):
- ব্যবহারকারী নিবন্ধন (Register) করুন
- পাসওয়ার্ড হ্যাশ (Hash) করুন
- লগইন এবং ক্রেডেনশিয়াল যাচাই করুন
- JWT টোকেন তৈরি করুন
- সুরক্ষিত রুটগুলোতে অ্যাক্সেস করুন
আপনার এই টুলগুলো ব্যবহার করা উচিত:
- পাসওয়ার্ড হ্যাশিংয়ের জন্য bcrypt সহ passlib
- টোকেন জেনারেশনের জন্য python-jose
পাসওয়ার্ড কখনোই প্লেইন টেক্সট (plain text) হিসেবে সংরক্ষণ করবেন না। যদি কোনো হ্যাকার আপনার ডেটাবেস চুরি করে, তবে তারা সবকিছু পেয়ে যাবে। পরিবর্তে, একটি হ্যাশ (hash) সংরক্ষণ করুন।
একটি হ্যাশ "password123"-কে এলোমেলো ক্যারেক্টারের একটি দীর্ঘ স্ট্রিং-এ রূপান্তরিত করে। আপনি হ্যাশটিকে পুনরায় পাসওয়ার্ডে রূপান্তর করতে পারবেন না। আপনি কেবল যাচাই করেন যে ইনপুটটি হ্যাশের সাথে মিলে কি না।
কীভাবে তৈরি করবেন:
রেজিস্ট্রেশন (Registration) ব্যবহারকারী একটি ইউজারনেম এবং পাসওয়ার্ড পাঠায়। আপনি পাসওয়ার্ডটি হ্যাশ করবেন এবং আপনার ডেটাবেসে সংরক্ষণ করবেন।
লগইন (Login) ব্যবহারকারী ক্রেডেনশিয়াল পাঠায়। আপনি সংরক্ষিত হ্যাশটি খুঁজে বের করেন। পাসওয়ার্ড যাচাই করার জন্য আপনি লাইব্রেরিটি ব্যবহার করেন। যদি এটি মিলে যায়, তবে আপনি একটি টোকেন তৈরি করেন।
JWT জেনারেশন (JWT Generation) একটি টোকেনে ব্যবহারকারীর ডেটা এবং একটি এক্সপায়ারি টাইম (expiry time) থাকে। আপনি একটি সিক্রেট কি (secret key) দিয়ে টোকেনটি সাইন করেন। যদি কোনো ব্যবহারকারী ডেটা পরিবর্তন করার চেষ্টা করে, তবে সিগনেচারটি ব্যর্থ হবে।
লগইন রেসপন্সটি দেখতে এরকম: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
এখন ব্যবহারকারীর কাছে আপনার সিস্টেমের একটি চাবিকাঠি রয়েছে।
পরবর্তী অংশে, আমরা শিখব কীভাবে নির্দিষ্ট রুট সুরক্ষিত করতে এবং ব্যবহারকারীর রোল (role) ম্যানেজ করতে এই টোকেনগুলো ব্যবহার করা যায়।
ধাপগুলোর সারসংক্ষেপ:
- ব্যবহারকারী নিবন্ধন করুন
- পাসওয়ার্ড হ্যাশ এবং সংরক্ষণ করুন
- লগইনের সময় পাসওয়ার্ড যাচাই করুন
- সাইন করা JWT তৈরি করুন
Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Optional learning community: https://t.me/GyaanSetuAi