تشخیص هویت مبتنی بر توکن Token-based authentication

تشخیص هویت مبتنی بر توکن Token-based authentication

0 نظر

تشخیص هویت مبتنی بر توکن در مقابل احراز هویت مبتنی بر کوکی

تشخیص هویت مبتنی بر توکن token based authentication:

تشخیص هویت مبتنی بر توکن، stateless هستن یعنی سرور از کاربر وارد شده (logged in) به سیستم چیزی ذخیره نمیکنه. هر درخواست به سرور همراه با توکن برای احراز هویت هستش. توکن تایید شده میتونه در قالب هدر (header) Bearer {JWT} و یا حتی درقالب بدنه (body) ی یه درخواست ارسال بشه.

  • کاربر اطلاعات لوگین رو وارد میکنه
  • سرور پس از تایید یه توکن امضا شده (signed) برمیگردونه
  • توکن برگشتی معمولا در حافظه محلی (local storage) مرورگر ذخیره میشه حتی میتونه تو سشن محلی (local session) ذخیره بشه و یا کوکی
  • درخواست های بعدی به سرور شامل این امضاء به عنوان یک هدر برای احراز هویت میباشد.
  • سرور توکن ارسالی رو دیکد (decode) و در صورت تایید درخواست رو پردازش میکنه
  • هنگامی که کاربر خارج شه (log out) این امضاء از بین میره

تشخیص هویت مبتنی بر کوکی cookie based authentication:

تشخیص هویت مبتنی بر کوکی، stateful هستن یعنی یه رکورد یا سشن احراز هویت شده باید هم در سرور و هم سمت کلاینت نگهداری شه. سرور برای ردیابی سشن های فعال اونهارو تو دیتابیس ذخیره میکنه و همچنین در فرانت اند یک کوکی برای ذخیره شناسه سشن (session id) ساخته میشه.

  • کاربر اطلاعات لاگین رو وارد میکنه
  • سرور پس از تایید گواهی ارائه شده یه سشن میسازه و تو یه بانک اطلاعاتی ذخیره میکنه
  • یه کوکی از شناسه سشن ساخته شده تو مرورگر کاربر قرار میگیره
  • تو درخواست (request) های بعدی کاربر به سمت سرور شناسه سشن با سشن ذخیره شده در دیتابیس مقایسه و در صورت اعتبار، درخواست پردازش میشه
  • وقتی کاربر از سیستم خارج (log out) شد سشن سمت کلاینت و سرور از بین میره

تشخیص هویت مبتنی بر توکن

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

– شاید یکی از مزایای بزرگ استفاده از توکن به جای کوکی ها stateless بودن اونها باشه که سرور نیازی به ذخیره توکن نداره.
– با روش مبتنی بر کوکی به راحتی شناسه سشن ذخیره میشه اما در توکن بیس ها فرمت دیتاها شامل reserved, public, private میتونه باشه، بسته به مورد استفاده تون میتونید مقدار کمی از هر چیزی ذخیره کنید از قبیل شناسه کاربر و تاریخ اعتبار توکن یا شایدم بخواین ایمیل کاربرُ داشته باشید.

– کوکی ها با تک دومین و ساب دومین به خوبی کار می کنند اما نمیتونن با دومین خارجی مورد استفاده باشن در مقابل توکن بیس ها، میتونید با فعال کردن CORS که منجر به افشای اطلاعات میشه با دومین ها و سرویس های مختلف کار کنین.

عملکرد:

– هنگام استفاده از روش مبتنی بر کوکی، در بک اند عمل جستجو در دیتابیس دارید که در مقایسه با دیکد کردن توکن بیس ها زمان زیادی میبره.

به فرض کاربری میخواد به مسیر مجاز به ادمین ها دسترسی داشته باشه، درکوکی بیس ها یک فراخوانی دیتابیس برای تایید شناسه سشن و فراخوان دیگر دیتابیس برای دریافت اطلاعات کاربر و تایید اینکه کاربر ادمین هست یا نه و سرانجام فراخوان سوم برای دریافت اطلاعات دارید.

اما به روش توکن بیس ها میتونید نقش کاربر رو در توکن ذخیره کنید بنابراین وقتی یک درخواستی زده میشه توکن اعتبارسنجی میشه و با یه فراخوان به دیتابیس اطلاعات دریافت میشه

– در فناوری تلفن همراه اپلیکیشن ها همیشه با مرورگر در تعامل نیستن پس محدودیت های زیادی از کوکی ها در استفاده از سیستم عامل تلفن همراه داریم.
– کوکی ها سایز کمی دارن اما توکن ها بسته به نیازتون داره، نکته مهم اینکه اگر اطلاعات زیادی استفاده کنید میتونه مشکل ساز باشه چون تو هر درخواست باید این حجم اطلاعات رو برا تشخیص هویت ارسال کنید.
– توکن هارو هرجا بخواین میتوند ذخیره کنید
مثلا در حافظه محلی (local storage) مروگرها، اما مشکلی که هست اینه که دیتای توکن ها نمی تونند توسط هر دومین دیگری از جمله ساب دومین ها قابل دسترس باشند.
یا در حافظه کوکی (cookie) مرورگرها، اما مشکلی که هست ماکسیمم سایز حافظه کوکی 4kb . بنابراین اگه بخواین دیتای زیادی به توکن اتچ (attach) کنید به مشکل میخورید.
یا میتونید در حافظه سشن (session storage) ذخیره کنید که شبیه حافظه محلیه با این تفاوت که با بستن پنجره مرورگر تمام اطلاعاتش پاک میشه.

امنیت:

دو مورد از متداول ترین حملاتی که سایتا با اون روبه رو هستن (XSS) و (XSRF or CSRF)

حمله XSS زمانی رخ میده که یه موجود خارجی قادر به اجرای کدهای درون وب سایت یا برنامه شما باشد. اگه input های وبسایتتون اصولی درست نشده باشه، حمله کننده میتونه روی دومین شما کد اجرا کنه بنابراین توکن ها کارساز نخواهند بود.
حملات XSRF اگه از توکن ها در local storage استفاده کنید مشکل ساز نخواهند بود.