تنفيذ WebAuthn في Next.js: دليل عملي
دليل عملي لتنفيذ WebAuthn في Next.js مع أمثلة حية للكود.
دليل عملي لتنفيذ WebAuthn في Next.js مع أمثلة حية للكود.
مرحبًا بكم مرة أخرى في سلسلة WebAuthn الخاصة بنا. في مقالاتنا السابقة، قمنا بتغطية أساسيات WebAuthn، و دليل 101. إذا كنت تنضم إلينا للتو، لا تتردد في التحقق من هذه الأساسيات لتكون على اطلاع كامل.
اليوم، نستعد للعمل لتطبيق النظرية في الممارسة. سنقوم باستخدام قوة Next.js مع الميزة الجديدة “إجراءات الخادم”. هدفنا؟ تنفيذ WebAuthn في تطبيق Next.js، والاستعداد لاستخدام WebAuthn.
قبل الغوص في بحر البرمجة، إليك لمحة عما ينتظرك في نهاية الرحلة - موقع تجريبي متكامل تمامًا. استكشفه لترى WebAuthn قيد العمل وللحصول على فكرة عما ستقوم ببنائه. في هذا الموقع التجريبي، يمكنك تسجيل مستخدمين جدد وتسجيل الدخول باستخدام مفاتيح المرور التي تم تسجيلها للتو.

ولأولئك الذين يفضلون الحصول على خريطة في أيديهم، لقد قمنا بتغطيتك! جميع الأكواد التي سنقوم بمناقشتها متاحة في مستودع GitHub العام. يعد هذا المستودع دليلك المرافق، حيث يقدم الشيفرة المصدرية الكاملة لتنفيذنا.
جاهز للانطلاق في هذه المغامرة المثيرة؟ دعنا نبدأ!
قبل أن نبدأ، لنتأكد من أن لدينا كل ما نحتاجه:
@simplewebauthn/browser، @simplewebauthn/server و @simplewebauthn/typescript-typesالآن، مع أدواتنا وموادنا في اليد، نحن جاهزون للبدء في البناء.
من السهل تهيئة تخزين KV سواء في الإنتاج أو في التنمية المحلية، اتبع هذا الدليل لإضافة مخزن KV لمشروعك وسحب القيم البيئية: https://vercel.com/docs/storage/vercel-kv/quickstart
قمنا بتصدير وظيفتين:
getCurrentSession: استخدام مساعد ملفات تعريف الارتباط في Next.js لإنشاء جلسة للطلب الحالي، وإرجاع القيمة.updateCurrentSession: حفظ البيانات في الجلسة الحالية.بشكل مشابه لتطبيق الجلسة، دعونا نقوم بتنفيذ قاعدة بيانات مستخدم بسيطة.
قمنا بإنشاء وظائف للبحث عن المستخدم عبر البريد الإلكتروني، وتحديث بيانات المستخدم عبر البريد الإلكتروني. تذكر، هذا لأغراض العرض فقط، في المنتج الحقيقي، عادة ما يتم الاحتفاظ ببيانات المستخدم في قاعدة بيانات.
قبل المتابعة، لنرى رسمًا بيانيًا يوضح عملية التسجيل والمصادقة:
كما ترون، نحتاج إلى إعداد وظيفتين:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationمشابه لعملية التسجيل، يتطلب تسجيل الدخول وظيفتين:
generateWebAuthnLoginOptionsverifyWebAuthnLoginإليك الكود:
لقد أكملنا التحضير، دعونا نبني الصفحة:
مبروك على اجتيازك تعقيدات تنفيذ WebAuthn في تطبيق Next.js. ومع اقترابنا من النهاية، من المهم معالجة بعض الاعتبارات الأساسية لنشره في بيئة إنتاجية.
userId أو username.شكرًا لانضمامك إلينا في هذه الرحلة التعليمية. حتى في هذا المثال البسيط، ليس من السهل دمج WebAuthn، هناك خيار آخر، جرب WebAuthn في مصادقة العوامل المتعددة لـ Logto: