
- بواسطة x32x01 ||
أول حاجة، ليه Authentication مهم؟
قبل أي نظام يسمحلك تدخل أو تعمل حاجة، لازم يتأكد مين اللي بيستخدمه. Authentication هو البوابة دي
، اللي بيقول للسيستم: "ده صاحب الحساب ولا حد تاني؟".
بعد كده ييجي موضوع Authorization، وده مسؤول عن صلاحيات المستخدم، وده موضوع تاني مش هنا.
أنواع Authentication وإمتى تستخدم كل واحدة
في النوع ده، بتبعت اسم المستخدم والباسورد في هيدر Authorization مشفر بـ Base64.
مميزاته:
عيوبه:
امتى تستخدمه؟
امتى متستخدمهاش؟
في Bearer Tokens، بتبعت توكن في الهيدر:
امتى تستخدمه؟
مش بروتوكول تسجيل عادي، ده نظام بيسمح للمستخدم يدخل عن طريق Third-Party من غير ما يبعت الباسورد لتطبيقك.
الـ Third-Party بيدي Access Token للتطبيق.
امتى تستخدمه؟
JWT عبارة عن توكن موقع بختم رقمي فيه بيانات المستخدم وصلاحيته.
السيرفر يقدر يتحقق منه من غير ما يبص لقاعدة البيانات (Stateless).
مميزاته:
تنبيه أمني:
Access + Refresh Tokens
المستخدم يسجل مرة واحدة ويدخل على كل التطبيقات اللي جزء من نفس الشركة.
شائع في الشركات والمؤسسات الكبيرة، وبيتعمل غالبًا باستخدام OAuth2 أو SAML.
امتى تستخدمه؟
نصائح مهمة للأمان
دايمًا استخدم HTTPS.
حافظ على JWT signing keys بأمان.
خلي Access Tokens قصيرة في التايم.
وفّر طريقة Token Revocation لو حصل تسريب.
سجل المحاولات الفاشلة وراقب الـ logs.
الخلاصة
.
قبل أي نظام يسمحلك تدخل أو تعمل حاجة، لازم يتأكد مين اللي بيستخدمه. Authentication هو البوابة دي

بعد كده ييجي موضوع Authorization، وده مسؤول عن صلاحيات المستخدم، وده موضوع تاني مش هنا.
أنواع Authentication وإمتى تستخدم كل واحدة
Basic Auth
في النوع ده، بتبعت اسم المستخدم والباسورد في هيدر Authorization مشفر بـ Base64.مميزاته:
- سهل وسريع للتجارب.
- مناسب للـ APIs داخلية أو البروتوتايب.
عيوبه:
- لو مش محمي بـ HTTPS، الباسورد بيتبعت على طبق من فضة
.
امتى تستخدمه؟
- تجارب سريعة أو APIs داخلية غير حساسة.
امتى متستخدمهاش؟
- في Production من غير HTTPS.
Code:
GET /user HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Bearer Tokens - الستاندرد دلوقتي
في Bearer Tokens، بتبعت توكن في الهيدر: Code:
Authorization: Bearer <token>
- السيرفر يشوف التوكن ويخد القرار.
- Stateless وسهل في scaling.
- دي الطريقة الشائعة في APIs الحديثة.
امتى تستخدمه؟
- APIs عامة.
- خدمات مصغرة (Microservices).
- تطبيقات ويب وموبايل.
OAuth2 - Login بـ Google/GitHub
مش بروتوكول تسجيل عادي، ده نظام بيسمح للمستخدم يدخل عن طريق Third-Party من غير ما يبعت الباسورد لتطبيقك.الـ Third-Party بيدي Access Token للتطبيق.
امتى تستخدمه؟
- لو عايز Login with Google/Facebook/GitHub.
- لو منتجك بيتعامل مع صلاحيات على خدمات تانية.
Code:
GET /oauth2/authorize?client_id=123&redirect_uri=https://myapp.com/callback&response_type=code
JWT - JSON Web Token
JWT عبارة عن توكن موقع بختم رقمي فيه بيانات المستخدم وصلاحيته.السيرفر يقدر يتحقق منه من غير ما يبص لقاعدة البيانات (Stateless).
مميزاته:
- سريع وفعال.
- مناسب للـ Microservices.
تنبيه أمني:
- لو خزنت فيه بيانات مهمة من غير تشفير، الناس ممكن تقراها.
- خليها موقع بس وما تحطش معلومات حساسة جوه الـ payload.
- لو خسرت الـ Signing Key، هتحتاج تعمل revoke لكل التوكنز.
Access + Refresh Tokens
- Access Token: قصيرة (مثلاً 15 دقيقة)، تستخدمها للـ API.
- Refresh Token: طويلة، بتخليك تجيب Access جديد بدون ما المستخدم يعمل login تاني.
- ده ممتاز للأمان وتجربة المستخدم (UX)
.
JavaScript:
// مثال Node.js JWT
const jwt = require('jsonwebtoken');
const payload = { userId: 123, role: "admin" };
const secret = "mySuperSecretKey";
// إنشاء توكن قصير
const accessToken = jwt.sign(payload, secret, { expiresIn: '15m' });
// إنشاء توكن طويل
const refreshToken = jwt.sign(payload, secret, { expiresIn: '7d' });
console.log("Access:", accessToken);
console.log("Refresh:", refreshToken);
SSO - Single Sign-On
المستخدم يسجل مرة واحدة ويدخل على كل التطبيقات اللي جزء من نفس الشركة.شائع في الشركات والمؤسسات الكبيرة، وبيتعمل غالبًا باستخدام OAuth2 أو SAML.
امتى تستخدمه؟
- لو عندك منظومة خدمات داخلية.
- لو عايز تجربة سلسة للمستخدم.
نصائح مهمة للأمان





الخلاصة
- Basic Auth: سريع وسهل للتجارب، لكن خطر من غير HTTPS.
- Bearer Tokens: شائع، Stateless، مناسب للـ APIs الحديثة.
- OAuth2: لتسجيل الدخول بـ Google/Facebook/GitHub.
- JWT: سريع، Stateless، مناسب للـ Microservices، بس خد بالك من التخزين.
- SSO: تسجيل دخول مرة واحدة لكل التطبيقات داخل الشركة.

التعديل الأخير: