كيفية تنفيذ المصادقة ذات العاملين (2FA) في Node.js باستخدام تطبيقات المصادقة
تعلم كيفية تنفيذ المصادقة ذات العاملين (2FA) في Node.js باستخدام تطبيقات المصادقة، TOTP، ومكتبة otplib. يغطي هذا الدليل خطوة بخطوة كل شيء بدءًا من توليد رموز QR وصولاً إلى التحقق من رموز المصادقة.
ما هي المصادقة ذات العاملين (2FA)
في التطبيقات التقليدية، نستخدم عادةً البريد الإلكتروني/اسم المستخدم/الهاتف كمحددات هوية لدينا. عن طريق دمج هذه المحددات الهوية مع كلمات المرور أو رموز التحقق المقابلة، يمكننا إكمال عملية المصادقة.
ومع ذلك، في السيناريوهات التي تتطلب مستوى أعلى من الأمان، لا يكفي الاعتماد فقط على محددات الهوية للمصادقة. وذلك لأن هذه المحددات ومعلومات التحقق المقابلة لها قد تكون عرضة للتسريب.
هنا تأتي المصادقة ذات العاملين (2FA) - وهي طبقة أمان إضافية تتطلب من المستخدمين تقديم اثنين من عوامل المصادقة المختلفة للتحقق من هويتهم، مما يضمن أن الشخص الذي يحاول الوصول إلى الحساب هو المستخدم الشرعي بالفعل.
الطرق الشائعة للمصادقة ذات العاملين تشمل:
- مصادقة TOTP باستخدام تطبيقات المصادقة
- المصادقة البيومترية
- المصادقة المستندة إلى الجهاز
- رموز التحقق عبر SMS
في هذا الشرح، سنركز على تنفيذ مصادقة 2FA المستندة إلى TOTP باستخدام تطبيقات المصادقة باستخدام مكتبة otplib في تطبي قك Node.js.
ما هي مصادقة TOTP؟
TOTP تعني كلمات المرور الزمنية لمرة واحدة. كما تقول ويكيبيديا، هو خوارزمية حاسوبية تولد كلمة مرور لمرة واحدة (OTP) التي تستخدم الوقت الحالي كمصدر للتمييز.
مع مفتاح سري مشترك لـ TOTP بين هاتف المستخدم وخادم التطبيق، يمكن لكل من هاتف المستخدم وخادم التطبيق توليد نفس رمز TOTP في نفس الوقت:
بما أن توليد TOTP يعتمد على الوقت، يمكن حسابه دون اتصال. بالإضافة إلى ذلك، ينتج TOTP سلسلة عددية، مما يجعلها بسيطة وسهلة الاستخدام للمستخدم. بالتالي، يتم استخدام التحقق من TOTP عادةً كوسيلة للمصادقة ذات العاملين.
عندما يستخدم المستخدمون TOTP كوسيلة للمصادقة ذات العاملين، فإنهم غالبًا ما يواجهون تحدي تخزين السر الخاص بـ TOTP وتوليد رموز TOTP. هنا تأتي تطبيقات المصادقة للمساعدة. يمكننا استخدام تطبيقات المصادقة لتخزين السر الخاص بـ TOTP وستولد تطبيقات المصادقة رموز TOTP تلقائيًا لكم. عند الحاجة للتحقق، ما عليك سوى فتح تطبيق المصادقة الخاص بك، وستحصل على رمز TOTP المقابل للسر الخاص بـ TOTP. تشمل التطبيقات الشائعة المصادقة Google Authenticator وMicrosoft Authenticator.
تتمثل عملية تنفيذ TOTP كمصدّق ذي عاملين في خطوتين:
- ربط سر TOTP بالمستخدم.
- التحقق من رمز TOTP الخاص بالمستخدم بواسطة السر الخاص بـ TOTP ذات الصلة.
تتم عملية ربط TOTP بالمستخدم كما يلي:
بمجرد ربط المستخدم بـ TOTP، يمكنهم استخدامه للتحقق. العملية كالتالي:
كما هو موضح في المخطط، على جانب المستخدم، نستخدم تطبيقات المصادقة لإدارة السر الخاص بـ TOTP وتوليد رموز TOTP. على الجانب الخادم، نحتاج إلى دعم توليد سر TOTP والتحقق من رمز TOTP المُرسل من قبل المستخدم. في هذا المقال، سنستخدم otpllib كمثال لدمج الوظائف المتعلقة بـ TOTP على الجانب الخادم.
تنفيذ 2FA مستندة إلى TOTP باستخدام مكتبة otplib لتطبيقك Node.js
على افتراض أن تطبيقك يعتمد على Express.js، ويسجل المستخدمون الدخول عبر نقطة النهاية /sign-in
، الخطة لدعم TOTP في عملية تسجيل دخول المستخدم كما يلي:
- عندما لا يكون المستخدم مربوطًا بـ TOTP، أرسل السر الخاص بـ TOTP للمستخدم على شكل رمز QR ووجههم لربط TOTP.
- عندما يكون المستخدم قد تم ربطه بـ TOTP، وجههم للتحقق بواسطة TOTP.
أولاً، لنقم بتثبيت التبعيات للمشروع: otplib
وqrcode
:
التالي، لنحسن من نقطة النهاية /sign-in
الخاصة بنا.
وفقًا لتطبيقنا، عندما لا يكون المستخدم مربوطًا بـ TOTP، سنرسل رمز QR إلى الواجهة الأمامية:
يقوم المستخدم بمسح رمز QR باستخدام تطبيق المصادقة، وسيولد تطبيق المصادقة رمز TOTP ويخزن السر الخاص بـ TOTP ذي الصلة.
يرسل المستخدم رمز TOTP الذي حصل عليه إلى خادم التطبيق. إذا تم التحقق من الرمز بنجاح، يمكننا عندئذٍ ربط هذا TOTP للمستخدم.
لذا، لنتبيَن تنفيذ API /verify-totp
لاستقبال رمز TOTP المرسل من قبل المستخدم:
بهذه الطريقة، قمنا بربط TOTP بنجاح للمستخدم. بعد ذلك، عندما يقوم المستخدم بتسجيل الدخول، ما عليهم سوى فتح تطبيق المصادقة، إرسال رمز التحقق المقابل للسر الذي تم ربطه سابقًا، وستكتمل عملية المصادقة.
في API /verify-totp
، نستخدم السر الخاص بـ TOTP الذي تم ربطه سابقًا للتحقق من رمز TOTP.
الملخص
بناءً على هذا المقال، يجب أن تكون الآن قادرًا على دمج التحقق من تطبيق المصادقة لتطبيقاتك.
ومع ذلك، هذا مجرد مثال بسيط. عندما يكون تطبيقك كبيرًا أو من المتوقع أن يصبح معقدًا، قد يتطلب دمج طريقة مصادقة جديدة تكاليف كبيرة.
والخبر السار هو: Logto، كحل شامل لمزود خدمة المصادقة، يقدم دعمًا للمصادقة متعددة العوامل (MFA)، بما في ذلك التحقق من تطبيق المصادقة. من خلال الاستفادة من Logto، يمكنك دمج عملية تسجيل دخول مستخدم آمنة وفعالة مع MFA في تطبيقك في غضون دقائق قليلة!