Spring Security Features

🧠 1. مصادقة (Authentication) مرنة وسهلة الدمج

Spring Security بيوفّر نظام متكامل لتحديد من المستخدم وكيف يدخل:

  • يدعم Username/Password
  • أو JWT Tokens
  • أو OAuth2 / OpenID Connect (Google Login, Facebook Login …)
  • أو LDAP / SAML للمؤسسات الكبيرة

📘 مثال بسيط
بمجرد إضافة spring-boot-starter-security، التطبيق كله بيتأمن تلقائيًا وبيطلب تسجيل دخول، وبعدها تقدر تخصص الـ User Details.


🔐 2. تفويض (Authorization) دقيق

  • بتقدر تحدد مين يدخل إيه.
  • تدعم @PreAuthorize و @Secured وحتى SpEL expressions.

🎯 مثال:

@PreAuthorize("hasRole('ADMIN')")
@GetMapping("/users")
public List<User> getAll()
{ … }

ده معناه إن بس الـ ADMIN هو اللي يقدر ينفّذ الميثود دي.


🧱 3. Integration ممتازة مع Spring Boot

  • كل شيء auto-configured:
    مجرد تضيف الـ dependency، هيشتغل الأمن تلقائيًا.
  • تقدر تخصّص Security Filter Chain بنفس السهولة:@Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws
    Exception {
    http.csrf().disable()
    .authorizeHttpRequests()
    .requestMatchers("/api/public/**").permitAll()
    .anyRequest().authenticated()
    .and()
    .httpBasic();
    return http.build();
    }

🧩 4. دعم JWT وToken-based Security

  • تقدر تبني API حديث يعتمد على JWT Authentication.
  • Spring Security يدعم ذلك عن طريق filters جاهزة مثل OncePerRequestFilter.
  • سهل الدمج مع front-end (Angular / React).

🕵️ 5. Protection مدمجة ضد الهجمات الشائعة

Spring Security بيحميك تلقائيًا من:

الهجومالحماية
CSRF (Cross-Site Request Forgery)مفعّل تلقائيًا للـ Forms
XSS (Cross-Site Scripting)من خلال HTTP Headers
Session Fixationيمنع اختطاف الـ Sessions
Clickjackingعن طريق X-Frame-Options Headers

⚙️ 6. قابلية التخصيص الكاملة

  • ممكن تكتب Authentication Provider خاص بيك (مثلاً قاعدة بياناتك أو external API).
  • تقدر تعدّل الـ filters / order / entry points زي ما تحب.
  • تقدر تبني نظام Roles و Permissions بطريقتك.

🧠 7. دعم OAuth2 و Single Sign-On

Spring Security OAuth2 Client بيخليك تعمل Login بخدمات خارجية زي:

  • Google
  • GitHub
  • Facebook
    أو حتى Keycloak / Okta في بيئة المؤسسات.

🧰 8. Security Context و Auditing

  • كل request ليها SecurityContext بيخزن المستخدم الحالي.
  • تقدر تستخدمه في auditing أو logging:Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String username = auth.getName();

📊 9. التكامل مع Spring Actuator و Monitoring

  • يقدر يدمج Spring Security مع Actuator عشان تعمل حماية endpoints زي /actuator/health و /actuator/metrics.

❤️ باختصار:

Spring Security = مرونة + قوة + حماية جاهزة + تكامل تام مع Spring Boot.

هو الأساس لأي Enterprise App في Java.

Read more

لماذا يجب على كل Backend Engineer فهم 12-Factor App؟

في عالم البرمجة، أغلب المطورين يقضون وقتًا كبيرًا في كتابة الكود، لكن المشاكل الحقيقية غالبًا لا تظهر أثناء التطوير… بل تظهر بعد النشر في بيئة الإنتاج (Production). مشاكل مثل: * التطبيق شغال عندك ومش شغال على السيرفر * إعدادات مختلفة بين dev و prod * صعوبة في التوسّع (scaling)

By mahmoud hassan

ليه الناس بتستخدم الجافا

☕ أولًا: ما الذي يميّز جافا عن لغات البرمجة الأخرى؟ 🧱 1. الاستقرار والاعتمادية (Stability) * جافا معمولة للمؤسسات الكبيرة (Enterprise Systems) — زي البنوك، شركات الاتصالات، والحكومات. * الشركات دي بتحب استقرار الكود أكتر من أي شيء تاني. * أنظمة بتشتغل 10 و15 سنة على نفس الكود بدون مشاكل. 🎯 عشان كده معظم: * أنظمة

By mahmoud hassan