پیاده سازی JWT در Django برای احراز هویت API
در این بخش به بررسی نحوه پیاده سازی JWT در Django برای احراز هویت API می پردازیم، در دنیای توسعه وب و موبایل، امنیت و محافظت از دادههای کاربران اهمیت بسیاری دارد. یکی از راههای امن برای مدیریت این موضوع، پیادهسازی توکنهای JSON Web Tokens یا همان JWT است. این توکنها به توسعهدهندگان اجازه میدهند تا به راحتی و با امنیت بالا فرآیند احراز هویت را در APIهای خود پیادهسازی کنند. در واقع، JWTها یک استاندارد باز هستند که به واسطه آنها میتوان اطلاعات را به صورت امن بین سرویسدهنده و سرویسگیرنده منتقل کرد.
Django، به عنوان یک فریمورک وب محبوب در دنیای پایتون، امکاناتی را برای توسعهدهندگان فراهم کرده که به وسیله آنها میتوان به سرعت APIهای قدرتمند و ایمن ایجاد کرد. با ترکیب Django و JWT، میتوان APIهایی امن برای پروژههای بزرگ و کوچک ایجاد نمود که اطلاعات کاربران را به خوبی محافظت کند. در این مقاله، به بررسی نحوه پیادهسازی JWT در Django برای احراز هویت API خواهیم پرداخت. این راهنما به صورت گام به گام و با ارائه کدهای نمونه، نحوه پیادهسازی JWT در Django را به شما آموزش خواهد داد.
مقدمهای بر JSON Web Tokens (JWT) و نحوه کارکرد آن
JWT یک استاندارد برای ارسال اطلاعات به صورت امن بین دو بخش است. این توکنها در واقع رشتههایی متشکل از سه بخش اصلی هستند که با نقطه از هم جدا شدهاند. هر بخش به یک هدف خاص در فرآیند رمزگذاری اختصاص دارد:
- Header (سربرگ): شامل نوع توکن (JWT) و الگوریتم رمزنگاری است.
- Payload (بار): شامل دادههای مورد نظر برای ارسال، مانند اطلاعات کاربر یا ID است.
- Signature (امضاء): که برای تضمین صحت اطلاعات استفاده میشود و با ترکیب دو بخش قبل و یک کلید مخفی ایجاد میشود.
این ساختار باعث میشود که JWTها از امنیت و قابلیت اعتماد بالایی برخوردار باشند. به عنوان مثال، اگر کلید مخفی تغییر نکند، امکان تغییر Payload بدون اطلاع فرستنده وجود ندارد، چون Signature تایید نخواهد شد.
JWTها به دلیل سبک بودن و امن بودن، به خصوص در سیستمهای احراز هویت محبوب شدهاند و برای احراز هویت APIها نیز انتخابی بسیار خوب هستند. با یک بار صادر شدن JWT، کاربر میتواند تا زمان انقضای توکن به API دسترسی داشته باشد بدون نیاز به ارسال مجدد اعتبارنامهها.
نصب و تنظیمات مورد نیاز در Django
برای پیادهسازی JWT در Django، ابتدا باید کتابخانههای مورد نیاز را نصب کنیم و تنظیمات Django را پیکربندی کنیم تا از JWT برای احراز هویت استفاده کند.
مراحل نصب
- نصب Django REST framework
اگر هنوز Django REST framework را نصب نکردهاید، با استفاده از دستور زیر آن را نصب کنید:
pip install djangorestframework
- نصب Simple JWT
Simple JWT یک کتابخانه برای پیادهسازی JWT در Django است. این کتابخانه امکاناتی را برای مدیریت توکنها فراهم میکند. برای نصب آن از دستور زیر استفاده کنید:
pip install djangorestframework-simplejwt
- افزودن تنظیمات به پروژه Django
به فایلsettings.py
مراجعه کنید و تنظیمات زیر را اضافه کنید:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
}
این تنظیمات به Django میگوید که از JWT به عنوان روش پیشفرض احراز هویت استفاده کند.
ایجاد Endpoint برای تولید و تایید توکنهای JWT
برای پیادهسازی احراز هویت JWT، نیاز داریم که دو Endpoint برای تولید و تأیید توکنهای JWT ایجاد کنیم. در این بخش، نحوه ایجاد این Endpointها را توضیح میدهیم.
مرحله ۱: ایجاد Endpoint تولید توکن
در ابتدا یک فایل به نام views.py
ایجاد کنید و Endpoint برای تولید توکن را به این صورت پیادهسازی کنید:
مرحله ۲: افزودن Endpoint تولید توکن به urls.py
در فایل urls.py
، مسیر مربوط به این Endpoint را به این صورت اضافه کنید:
با این Endpoint، کاربران میتوانند با ارسال اطلاعات ورود خود (مانند نام کاربری و رمز عبور) یک توکن JWT دریافت کنند.
پیادهسازی محافظت از Endpointها با استفاده از JWT
یکی از کاربردهای مهم JWT، محافظت از Endpointهایی است که نیاز به دسترسی کاربران مجاز دارند. در این بخش، یک مثال ساده برای نحوه استفاده از JWT در حفاظت از Endpointها ارائه میدهیم.
ایجاد یک Endpoint محافظتشده
فرض کنید که میخواهیم یک Endpoint ساده ایجاد کنیم که فقط کاربران با توکن معتبر بتوانند به آن دسترسی داشته باشند:
این Endpoint با استفاده از @permission_classes([IsAuthenticated])
تنها به کاربران با JWT معتبر اجازه دسترسی میدهد.
تمدید و مدیریت زمان انقضای JWT
یکی از مزایای JWT، قابلیت تمدید توکن بدون نیاز به ورود مجدد است. برای این کار، از توکن refresh استفاده میشود. هر توکن JWT یک زمان انقضای مشخص دارد و پس از آن باید تمدید شود.
تنظیمات زمان انقضا
در settings.py
، میتوانید مقادیر زیر را برای کنترل زمان انقضا اضافه کنید:
در این تنظیمات، زمان انقضای توکن دسترسی (Access Token) به ۵ دقیقه و زمان انقضای توکن تمدید (Refresh Token) به یک روز تنظیم شده است. توکنهای تمدید به کاربران امکان میدهند که پس از انقضای توکن دسترسی، بدون ورود مجدد توکن جدید دریافت کنند.
در این مقاله، به بررسی نحوه پیادهسازی JWT در Django برای احراز هویت API پرداختیم. از آنجا که امنیت و احراز هویت دو عامل کلیدی در توسعه APIها هستند، استفاده از JWT میتواند به شما در بهبود امنیت پروژهها کمک کند. JWTها به دلیل قابلیت سبک بودن و امنیت بالا، انتخابی ایدهآل برای توسعهدهندگانی هستند که به دنبال پیادهسازی سیستم احراز هویت ایمن و کارآمد هستند.
منابع
آیا این مطلب برای شما مفید بود ؟