MODULE 8 - Spring Security
مرحبًا بكم في الوحدة 8! 🔐
تطبيقك يعمل بشكل مثالي... لكن يمكن لأي شخص الوصول إليه! كيف تحمي نقاط النهاية الخاصة بك؟ كيف تصادق مستخدميك؟ كيف تدير الأدوار والصلاحيات؟
Spring Security هو الحل لحماية تطبيقات Spring Boot الخاصة بك. هذه الوحدة تعلمك كيفية حماية تطبيقك كمحترف.
🎓 أهداف التعلم
في نهاية هذه الوحدة، ستكون قادرًا على:
- ✅ فهم بنية Spring Security
- ✅ تكوين المصادقة عبر النموذج وHTTP Basic
- ✅ تنفيذ مصادقة JWT (بدون حالة)
- ✅ دمج OAuth2 لتسجيل الدخول الاجتماعي (Google، GitHub)
- ✅ إدارة الأدوار والصلاحيات
- ✅ الحماية من CSRF، XSS والهجمات الأخرى
📚 المتطلبات الأساسية
قبل البدء في هذه الوحدة، يجب أن تكون قد:
- ✅ أكملت الوحدات من 1 إلى 7
- ✅ أتقنت بنية REST
- ✅ فهمت المفاهيم الأساسية لقواعد البيانات
- ✅ كنت مرتاحًا مع تعليقات Spring
إذا لم تكن هذه المتطلبات مكتسبة، عد إلى الوحدات السابقة!
🗺️ خطة الوحدة
الجزء النظري (5 فصول)
الفصل 1: مقدمة في Spring Security
المدة: 45 دقيقة
المحتوى:
- لماذا تأمين التطبيق؟
- بنية Spring Security
- فلاتر الأمان (Filter Chain)
- Authentication vs Authorization
- SecurityContext وPrincipal
لماذا هو مهم؟ فهم الأساسيات قبل التكوين
الفصل 2: المصادقة الأساسية
المدة: 1 ساعة
المحتوى:
- تكوين الأمان الحديث (Spring Security 6+)
- HTTP Basic وForm Login
- UserDetailsService
- PasswordEncoder (BCrypt)
- تخصيص صفحات تسجيل الدخول/الخروج
لماذا هو مهم؟ الأساس لأي مصادقة
الفصل 3: JWT (JSON Web Tokens)
المدة: 1 ساعة و15 دقيقة
المحتوى:
- ما هو JWT؟ لماذا نستخدمه؟
- هيكل التوكن (Header، Payload، Signature)
- توليد والتحقق من التوكنات
- Refresh Tokens
- التكامل مع Spring Security
لماذا هو مهم؟ معيار لـ API REST الحديثة
الفصل 4: OAuth2 وتسجيل الدخول الاجتماعي
المدة: 1 ساعة
المحتوى:
- مفاهيم OAuth2 (Authorization Code Flow)
- Client vs Resource Server
- تسجيل الدخول مع Google، GitHub، Facebook
- تكوين Spring Security OAuth2 Client
- تخصيص التدفق
لماذا هو مهم؟ تجربة مستخدم حديثة، كلمات مرور أقل لإدارتها
الفصل 5: الأمان المتقدم
المدة: 45 دقيقة
المحتوى:
- حماية CSRF
- تكوين CORS
- الأمان على مستوى الطريقة (@PreAuthorize, @Secured)
- الأدوار مقابل الصلاحيات (RBAC)
- رؤوس الأمان
لماذا هو مهم؟ الأمان بعمق
الجزء العملي (4 تدريبات)
TP8.1: مصادقة Form Login
المدة: 1 ساعة و30 دقيقة
الهدف: تأمين تطبيق بمصادقة عبر النموذج
ستقوم بـ:
- تكوين Spring Security
- إنشاء صفحة تسجيل دخول مخصصة
- تخزين المستخدمين في قاعدة البيانات
- إدارة الجلسة وتسجيل الخروج
TP8.2: API REST مع JWT
المدة: 2 ساعة
الهدف: إنشاء API REST مؤمنة بواسطة JWT
ستقوم بـ:
- تنفيذ نقاط النهاية login/register
- توليد والتحقق من توكنات JWT
- إنشاء فلتر مصادقة
- حماية نقاط النهاية حسب الدور
TP8.3: إدارة الأدوار والصلاحيات
المدة: 1 ساعة و30 دقيقة
الهدف: تنفيذ نظام RBAC كامل
ستقوم بـ:
- إنشاء أدوار (ADMIN، USER، MANAGER)
- تحديد صلاحيات دقيقة
- استخدام @PreAuthorize مع تعبيرات
- اختبار الوصول
TP8.4: تسجيل الدخول الاجتماعي مع Google
المدة: 1 ساعة و30 دقيقة
الهدف: دمج تسجيل الدخول Google OAuth2
ستقوم بـ:
- تكوين مشروع Google Cloud
- دمج OAuth2 Client
- استرجاع معلومات المستخدم
- الجمع مع المصادقة المحلية
📊 المدة الإجمالية
| النوع | المدة |
|---|---|
| النظرية | 4 ساعات و45 دقيقة (5 فصول) |
| العملية | 6 ساعات و30 دقيقة (4 تدريبات) |
| الإجمالي | 11 ساعة و15 دقيقة (~3-4 جلسات) |
🎯 ما ستفهمه
قبل هذه الوحدة
// API الخاص بك مفتوح للجميع! 😱
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List<User> getAllUsers() {
return userService.findAll(); // يمكن لأي شخص أن يرى!
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id); // يمكن لأي شخص أن يحذف!
}
}
بعد هذه الوحدة
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
@PreAuthorize("hasRole('USER')") // ← مستخدمون مصادقون
public List<User> getAllUsers() {
return userService.findAll();
}
@DeleteMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')") // ← فقط للمسؤولين!
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
ستعرف:
- ✅ من يمكنه الوصول إلى ماذا
- ✅ كيفية مصادقة المستخدمين
- ✅ كيفية إدارة توكنات JWT
- ✅ كيفية دمج OAuth2
- ✅ كيفية الحماية من الهجمات
🚀 لماذا هذه الوحدة أساسية
1. الأمان ليس اختياريًا
بدون أمان:
- سرقة البيانات الشخصية 💀
- تعديل غير مصرح به 💀
- انتحال الهوية 💀
- غرامات RGPD (حتى 4% من الإيرادات) 💀
2. مهارة مطلوبة بشدة
عروض العمل Java/Spring:
- "خبرة في Spring Security مطلوبة" ✓
- "معرفة JWT/OAuth2" ✓
- "تأمين API REST" ✓
3. أسئلة مقابلات شائعة
أسئلة نموذجية:
- "اشرح الفرق بين Authentication وAuthorization"
- "كيف يعمل JWT؟"
- "كيف تحمي ضد هجمات CSRF؟"
- "ما هو OAuth2 Authorization Code Flow؟"
🗺️ التقدم في التدريب
الوحدة 8 = جعل تطبيقك جاهزًا للإنتاج!
📖 كيفية التعامل مع هذه الوحدة
النظرية قبل الممارسة
-
اقرأ الفصول النظرية الخمسة
- الفصل 1: فهم البنية
- الفصل 2: المصادقة الأساسية
- الفصل 3: JWT (الأكثر استخدامًا في API)
- الفصل 4: OAuth2 (تسجيل الدخول الاجتماعي)
- الفصل 5: الأمان المتقدم
-
قم بالتدريبات بالترتيب
- TP8.1: Form Login (الأساسيات)
- TP8.2: JWT (API REST)
- TP8.3: الأدوار والصلاحيات
- TP8.4: OAuth2 Google
الوقت الموصى به
الخيار المكثف (يومان):
- اليوم 1 صباحًا: الفصول 1-2 + TP8.1
- اليوم 1 بعد الظهر: الفصل 3 + TP8.2
- اليوم 2 صباحًا: الفصول 4-5 + TP8.3
- اليوم 2 بعد الظهر: TP8.4 + مراجعة
الخيار التدريجي (3-4 جلسات):
- الجلسة 1: الفصول 1-2 + TP8.1
- الجلسة 2: الفصل 3 + TP8.2
- الجلسة 3: الفصول 4-5 + TP8.3
- الجلسة 4: TP8.4 + مشروع شخصي
✅ التقييم الذاتي
قبل البدء، أجب:
- هل تعرف ماذا تعني "المصادقة"؟ ☐ نعم ☐ لا
- هل تعرف الفرق مع "التفويض"؟ ☐ نعم ☐ لا
- هل سمعت من قبل عن JWT؟ ☐ نعم ☐ لا
- هل تعرف ما هو OAuth2؟ ☐ نعم ☐ لا
- هل تعرف هجمات CSRF؟ ☐ نعم ☐ لا
إذا أجبت بـ "لا" على أي سؤال → هذه الوحدة ستعلمك كل شيء!
⚠️ تحذير مهم
الأمان مجال حرج.
- لا تنسخ أبدًا تكوينات الأمان دون فهمها
- اختبر دائمًا تكويناتك
- حافظ على تحديث تبعياتك (ثغرات الأمان)
- لا تخزن أبدًا كلمات المرور بشكل نصي واضح
🎯 الخطوة التالية
جاهز لتأمين تطبيقك؟
➡️ ابدأ مع الفصل 1: مقدمة في Spring Security