
🔐 تعلم المصادقة من خلال بنائها بشكل صحيح. تنفيذ مرجعي قابل للتوسيع ومتوافق مع المعايير لـ Cloudflare Workers مع Hono وTurso وPBKDF2 وجلسات JWT ذات الرمزين المزدوجين.
تعلم المصادقة من خلال بنائها بالطريقة الصحيحة.
العرض المباشر · نموذج التهديد · تدفقات المصادقة · سجلات القرارات المعمارية
ملاحظة العرض التوضيحي: نقطة نهاية تسجيل الدخول محمية بتحديات إثبات العمل التكيفية — يؤدي الفشل المتكرر إلى زيادة صعوبة إثبات العمل. تم تنفيذ واختبار تحديد معدل الطلب المدعوم بالذاكرة المؤقتة ولكنه غير مُفعل حاليًا في العرض المباشر؛ قم بتبديل
createCacheClientفيapp.tsلتفعيله.
تنفيذ مرجعي للمصادقة من الصفر لـ Cloudflare Workers — تجزئة كلمة المرور بـ PBKDF2، جلسات الرمز المزدوج JWT، المقارنة في وقت ثابت، انتهاء الصلاحية المتحرك، ومكون إضافي قابل للإزالة للمراقبة — كل ذلك متصل مع Hono و Turso (مع تخزين اختياري لـ Valkey/Redis) و TypeScript صارم.
كل خيار تصميمي يعود إلى معيار: NIST SP 800-63B لبيانات الاعتماد، NIST SP 800-132 لاستخلاص المفاتيح، OWASP ASVS للتحقق، و RFC 8725 لأفضل ممارسات JWT.
تريد شحن منتج؟ استخدم Better Auth بدلاً من ذلك — فهو يغطي OAuth ومفاتيح المرور والمصادقة متعددة العوامل وتحديد معدل الطلب والمزيد من الصندوق مع نظام إضافات نشط. هذا المستودع موجود ليعلمك كيف تعمل المصادقة، وليس لاستبدال مكتبة إنتاجية.
| الطبقة | ماذا تفعل |
|---|---|
| تخزين كلمة المرور | PBKDF2-SHA384 مع أملاح 128-بت، ملخص سلامة، تتبع الإصدار (password-service.ts) |
| إدارة الجلسات | جلسات من جانب الخادم مع تتبع الجهاز، انتهاء صلاحية متحرك، تطبيق حد أقصى 3 جلسات لكل مستخدم؛ جلسات اختيارية مدعومة بالذاكرة المؤقتة عبر Valkey/Redis (session-service.ts، cached-session-service.ts) |
| تغيير كلمة المرور | إعادة التحقق من كلمة المرور الحالية، إعادة تجزئة كاملة لـ PBKDF2، إلغاء ذري لجميع الجلسات (account-service.ts، ADR-004) |
| نمط الرمز المزدوج JWT | رمز وصول لمدة 15 دقيقة + رمز تحديث لمدة 7 أيام، مرتبط بالجلسة للإلغاء (token-service.ts) |
| وسيط المصادقة | تدفق تحديث تلقائي، تثبيت صريح لـ HS256، التحقق من ادعاء typ (require-auth.ts) |
| ملفات تعريف الارتباط الآمنة | HttpOnly، Secure، SameSite=Strict، Path=/ (cookie.ts) |
| رؤوس الأمان | HSTS، CSP، CORP/COEP/COOP، سياسة الأذونات، إزالة بصمة الجهاز (security.ts) |
| التحقق من الإدخال | مخططات Zod مع سياسة كلمة مرور متوافقة مع NIST (الطول فقط، لا قواعد تعقيد) |
| تحديد معدل الطلب | خنق نافذة ثابتة ضد هجمات القوة العمياء وحشو بيانات الاعتماد: مقيد بعنوان IP على مسارات المصادقة العامة (مثل تسجيل الدخول)، ومقيد بالمستخدم على الإجراءات المحمية؛ لا إغلاق صارم (متوافق مع NIST) (ADR-006) |
| المكون الإضافي للمراقبة | أحداث أمنية منظمة، تحديات إثبات عمل تكيفية، واجهة برمجة تطبيقات /ops مُوثَّقة بواسطة وكيل — يتم توصيله عبر وسيط، قابل للإزالة بحذف حزمة واحدة (ADR-008) |
| أدوات سطر الأوامر | واجهة مستخدم نصية Go (plctl) للاستعلام عن الأحداث، إدارة الجلسات، وتوفير بيانات اعتماد الوكيل عبر سطح /ops (tools/cli/) |
| اختبارات متجهات الهجوم | التلاعب بالرمز JWT، الارتباك في الخوارزمية، ارتباك النوع، حالات الحافة لـ Unicode، فحوصات تسريب المعلومات |
هذا المشروع يتعمد حذف الميزات التي تقع خارج نطاقه التعليمي. إذا كنت توسّع هذا الكود نحو الإنتاج (أو تقيّم ما يتطلبه نظام مصادقة إنتاجي)، فإن الجداول أدناه تنظم الفجوات حسب مستوى الأولوية.
بالنسبة لمعظم المشاريع الواقعية، استخدم Better Auth بدلاً من بناء هذه بنفسك.
| الميزة | لماذا هي مهمة | المعيار / المرجع |
|---|---|---|
| فحص كلمات المرور المخترقة | يمنع استخدام كلمات المرور المعروفة في تسريبات البيانات العامة | NIST SP 800-63B §5.1.1.2، HIBP API |