احراز هویت JWT در FastAPI

احراز هویت (Authentication) می‌پرسد «تو کی هستی؟» تعیین سطح دسترسی (Authorization) می‌پرسد «چه کاری می‌توانی انجام دهی؟»

اگر یک پلتفرم هوش مصنوعی بدون امنیت بسازید، هر کسی می‌تواند به داده‌های خصوصی دسترسی داشته باشد. آن‌ها می‌توانند پروفایل‌های کاربری را تغییر دهند یا پیشرفت دانش‌آموزان را مشاهده کنند. شما باید از منابع خود محافظت کنید.

JWT (JSON Web Token) این مشکل را حل می‌کند. به جای ارسال رمز عبور با هر درخواست، کاربر یک توکن امن ارسال می‌کند.

گردش کار:

شما باید از این ابزارها استفاده کنید:

هرگز رمزهای عبور را به صورت متن ساده (plain text) ذخیره نکنید. اگر هکری پایگاه داده شما را سرقت کند، به همه چیز دسترسی خواهد داشت. در عوض، یک هش ذخیره کنید.

یک هش، عبارت "password123" را به رشته‌ای طولانی از کاراکترهای تصادفی تبدیل می‌کند. شما نمی‌توانید هش را دوباره به رمز عبور تبدیل کنید. شما فقط تأیید می‌کنید که آیا ورودی با هش مطابقت دارد یا خیر.

نحوه ساخت آن:

۱. ثبت‌نام کاربر نام کاربری و رمز عبور را ارسال می‌کند. شما رمز عبور را هش کرده و آن را در پایگاه داده خود ذخیره می‌کنید.

۲. ورود کاربر اطلاعات کاربری را ارسال می‌کند. شما هش ذخیره شده را پیدا می‌کنید. از کتابخانه برای تأیید رمز عبور استفاده می‌کنید. اگر مطابقت داشت، یک توکن ایجاد می‌کنید.

۳. تولید JWT یک توکن شامل داده‌های کاربر و زمان انقضا است. شما توکن را با یک کلید مخفی (secret key) امضا می‌کنید. اگر کاربری سعی کند داده‌ها را تغییر دهد، امضا نامعتبر خواهد بود.

پاسخ ورود به این شکل است:

{
"access_token": "eyJhbGciOiJIUzI1Ni...",
"token_type": "bearer"
}

اکنون کاربر کلیدی برای ورود به سیستم شما در اختیار دارد.

در بخش بعدی، یاد خواهیم گرفت که چگونه از این توکن‌ها برای محافظت از مسیرهای خاص و مدیریت نقش‌های کاربری استفاده کنیم.

خلاصه مراحل:

Source: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk

Optional learning community: https://t.me/GyaanSetuAi