كيفية تبسيط مصادقة تطبيقك باستخدام JSON Web Token

تدفق مصادقة العينة

كل تطبيق نواجهه اليوم ينفذ تدابير أمنية بحيث لا يتم إساءة استخدام بيانات المستخدم. الأمن هو دائما شيء يتغير ويتطور. المصادقة هي جزء أساسي من كل تطبيق.

هناك طرق مختلفة لمصادقة المستخدم. دعونا نناقش المصادقة المستندة إلى الرمز المميز باستخدام تطبيق node.js. لهذا ، سوف نستخدم رموز JSON Web.

ما هي JSON Web Tokens (JWT)؟

JSON Web Tokens (JWT) هو معيار يحدد طريقة مدمجة قائمة بذاتها لنقل المعلومات بشكل آمن بين الأطراف ككائن JSON.

  • مدمجة: حجم أصغر بحيث يتم نقله بسهولة.
  • مكتفية ذاتيا: يحتوي على جميع المعلومات حول المستخدم.

كيف يعملون؟

عندما يقوم المستخدم بإرسال طلب مع المعلمات المطلوبة مثل اسم المستخدم وكلمة المرور. يتحقق التطبيق من صحة اسم المستخدم وكلمة المرور. عند التحقق من الصحة ، سيقوم التطبيق بإنشاء رمز مميز باستخدام حمولة ومفتاح سري. بعد ذلك ، سيتم إرسال الرمز المميز إلى المستخدم لتخزينه وإرساله مع كل طلب. عندما يرسل المستخدم طلبًا بهذا الرمز المميز ، يتحقق التطبيق من الصلاحية باستخدام نفس المفتاح السري. إذا كان الرمز صالحًا ، فسيتم تقديم الطلب ، وإلا سيقوم التطبيق بإرسال رسالة خطأ مناسبة.

تدفق الجيل رمزية

بناء

الهيكل الأساسي لل JWT هو شيء من هذا القبيل

توقيع الحمولة الرأسية
  • رأس: يحتوي على نوع الرمز المميز والخوارزمية المستخدمة في توقيع. يحصل المشفرة إلى base64.
  • الحمولة: أي بيانات مستخدم مخصصة مثل اسم المستخدم والبريد الإلكتروني.
  • التوقيع: تجزئة رأس مشفر ، الحمولة ومفتاح سري.

مزايا JWT

  • مفتاح واحد: ليست هناك حاجة لمكالمات قاعدة البيانات في كل مرة للتحقق من المستخدم. سيقوم مفتاح سري واحد بفك تشفير الرموز التي يوفرها أي مستخدم.
  • محمول: يمكن استخدام الرمز المميز نفسه بين مجالات مختلفة أو منصات مختلفة. كل ما تحتاجه هو المفتاح.
  • سهل انتهاء الصلاحية: يمكن للمرء ضبط وقت انتهاء الصلاحية باستخدام JWT. بعد ذلك الوقت تنتهي JWT.

كيف يمكننا أن نفعل ذلك؟

نحن بصدد إنشاء تطبيق node.js مع عدد قليل من الطرق والمصادقة عليها باستخدام الرموز. مطلوب معرفة أساسية من node.js وجافا سكريبت.

الخطوة 1 - فتح المحطة. بدء مشروع جديد في دليل

مؤتمر نزع السلاح المصادقة
npm init

هذا سيبدأ مشروع جديد. سوف تطلب العملية بعض المعلومات. تقديم جميع التفاصيل المطلوبة. ستعمل العملية على إنشاء package.json وستبدو مثل هذا.

{
  "الاسم": "المصادقة" ،
  "الإصدار": "1.0.0" ،
  "الوصف": "تطبيق لشرح المصادقة" ،
  "الرئيسي": "server.js" ،
  "البرامج النصية": {
    "test": "echo \" خطأ: لم يتم تحديد اختبار \ "&& exit 1"
  }،
  "المؤلف": "اسمك" ،
  "الترخيص": "مركز الدراسات الدولي"
}

الخطوة 2 - تثبيت التبعيات. العودة مرة أخرى إلى محطة ولصق السطر التالي.

npm تثبيت صريح - محلل jsonwebtoken - حفظ
  • صريح: Node.js إطار تطبيق الويب.
  • محلل النص: للحصول على معلمات من طلب POST لدينا.
  • jsonwebtoken: لإنشاء الرموز والتحقق منها.

بعد تثبيت التبعيات. package.json لدينا سوف تبدو بشيء من هذا القبيل:

{
  "الاسم": "المصادقة" ،
  "الإصدار": "1.0.0" ،
  "الوصف": "تطبيق لشرح المصادقة" ،
  "الرئيسي": "server.js" ،
  "البرامج النصية": {
    "test": "echo \" خطأ: لم يتم تحديد اختبار \ "&& exit 1"
  }،
  "المؤلف": "اسمك" ،
  "الترخيص": "مركز الدراسات الدولي" ،
  "التبعيات": {
    "المحلل اللغوي": "^ 1.17.2" ،
    "تعبير": "^ 4.15.3" ،
    "jsonwebtoken": "^ 7.4.1"
  }
}

الخطوة 3 - إنشاء الخادم

دعونا ننشئ خادمًا ، يعمل في المنفذ 3000 الذي يرسل index.html عندما يتم استدعاء / route. سنقوم أيضًا بإنشاء / تسجيل الدخول API الذي يصادق المستخدم و / getusers API الذي يعطي قائمة المستخدمين. لنقم بإنشاء بيانات وهمية الآن وتخزينها في صفيف "المستخدمين". يمكنك أيضًا استبدالها بمكالمات قاعدة البيانات.

الخطوة 4 - بناء العميل

فلنقم بإنشاء عميل باستخدام HTML و Bootstrap و JavaScript. يحتوي عميلنا على جزأين: شاشة تسجيل الدخول ومكان لاسترداد المستخدمين. سوف تحتوي شاشة تسجيل الدخول على مربعات النص للبريد الإلكتروني وكلمة المرور وزر لإرسال الطلب. سنقوم أيضًا بإضافة مربع نص وزر لتمرير الرمز المميز والحصول على قائمة المستخدمين.

الخطوة 5 - بدء التطبيق

عقدة server.js

هل تطبيقنا آمن؟

لا ، قد ترى أنه حتى إذا لم تقم بتمرير الرمز المميز ، فيمكنك الحصول على قائمة بجميع المستخدمين. لم نطبق المصادقة بعد. دعنا نضيف المصادقة إلى / getusers API حتى يتمكن المستخدمون ذوو الرمز المميز من استرداد قائمة المستخدمين.

كيفية إضافة المصادقة؟

  1. تضمين JWT إلى ملف server.js.
var jwt = require ('jsonwebtoken') ؛

2. تمرير الحمولة (أي كائن ، هنا تمرير كائن المستخدم نفسه) وسلسلة سرية للتوقيع وظيفة وإنشاء رمز.

var token = jwt.sign (، 

3. عندما يتم إنشاء الرمز المميز بنجاح تمرير نفسه إلى العميل.

res.json ({رمز: رمز})؛

يمكنك بعد ذلك تخزين الرمز المميز على جانب العميل وتمريره في كل مرة أثناء الجلسة للمصادقة. دعونا نغير وظيفة "getlist" حتى نتمكن من تمرير الرمز المميز إلى الخادم عندما نريد الوصول إلى قائمة المستخدمين.

دعنا نضيف برنامج وسيط لمصادقة / getusers أو أي طريق آمن يضاف في المستقبل. تأكد من أن جميع المسارات التي تحتاج إلى مصادقة أسفل البرامج الوسيطة.

في server.js ، لدينا أولاً طريق تسجيل الدخول الذي ينشئ رمزًا مميزًا. بعد ذلك لدينا الوسيطة التي سوف نستخدمها للتحقق من الرمز المميز. جميع الطرق التي تحتاج إلى مصادقة بعد الوسيطة. الترتيب مهم جدا.

4. لفك تشفير ، يمكنك تمرير الرمز المميز والمفتاح السري للتحقق من الوظيفة. سوف تقوم الدالة بإرجاع الخطأ إذا كان الرمز غير صالح أو النجاح إذا كان الرمز صالح.

jwt.verify (علامة "samplesecret"، (يخطئ، decod) => {
  // المنطق الخاص بك
})

اتصل التالي () حتى يتم استدعاء المسارات المعنية.

سيبدو server.js النهائي كالتالي:

سيبدو index.html النهائي كالتالي:

هذا هو. هذا مثال بسيط على كيفية استخدام الرمز المميز لمصادقة التطبيق الخاص بك. لقد وضعت رمز كامل على جيثب. يمكنك التحقق من ذلك هناك.

نشكرك على القراءة واتبعني وأوصي الآخرين بذلك من خلال النقر على ♡. بلدي التغريد مقبض sudheeshshetty.