اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

تعلمت أن للقيام بعملية الـ Authentication فالطريقة الأكثر استخداما هي Token base authentication, ولكن ما الهدف من هذه الطريقة أقصد لما لا نقوم فقط بإنشاء عنصر session بإسم user مثلا, ثم بعد كل طلب يرسله العميل نتحقق أولا من عنصر user إذا كان موجودا فهذا إذن يدل على أنه قد سبق لمستخدم معين الدخول إلى التطبيق وبالتالي نقوم بمعالجة طلبه

فما دور الـ Tokens إذن ؟

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته .

نعم بالفعل قديما يتم تخزين بيانات المستخدم في ال session كما كان يحدث في php ولكن لنشرح معا الفرق بين session وبين ال token .

تعتمد فكرة الـ Sessions على تخزين حالة المستخدم (User State) على السيرفر. عندما يقوم المستخدم بتسجيل الدخول أو زيارة الموقع لأول مرة يتم إنشاء Session له تلقائيا في السيرفر، ويتم تعيين مُعرف (ID) فريد لهذه الـ Session في الخادم ويتم حفظ ال id في المتصفح في ال session ويتم إرسال ال id مع كل طلب . هذا المُعرف يتم استخدامه للتعرف على المستخدم في كل طلب يرسله إلى السيرفر، وبذلك يكون السيرفر قادراً على معرفة هوية المستخدم والتأكد من صلاحيته.

على العكس تماما الـ Tokens هي عبارة عن عناصر صغيرة من المعلومات (مثل سلسلة نصية) يتم توليدها وتشفيرها من خلال السيرفر بعد عملية تسجيل الدخول بنجاح. يتم تضمين هذا الـ Token في كل طلب يقدمه المستخدم إلى السيرفر. السيرفر يقوم بفحص الـ Token للتحقق من هوية المستخدم وصلاحيته ويتأكد هل ال Token تم التلاعب به أم لا. الـ Token يحمل معلومات مثل هوية المستخدم وأي صلاحيات أو صلاحيات الوصول (Access Permissions) التي لديه.

المزايا الرئيسية للاستخدام الـ Token-based:

  1. أمان : الـ Tokens يكون مشفرا لهذا من الصعب التلاعب به أو تزويره.
  2. قابلية التوزيع: يمكن توزيع الـ Tokens عبر عدة سيرفرات أو خدمات بسهولة دون الحاجة إلى مشاركة حالة الجلسة بينهم فمن الممكن أن يكون المشروع لديك على عدة سيرفرات أو خدمات لهذا ال Sessions لن تنفع.
  3. عديم الحالة (Stateless): الـ Tokens تسمح بإنشاء تطبيقات عديمة الحالة (Stateless Applications)، حيث لا يتم تخزين حالة المستخدم على السيرفر فمن الممكن أن يكون الطلب يتم إرساله من تطبيق هاتف أو حتي تطبيق سطح مكتب أو ويب.

لذلك ال Token-based أفضل حاليا من حيث القدرة على توزيع المشروع على عدة سيرفرات و عدم الإعتماد على حالة سيرفر واحد وال session الخاص به.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...