تعلم Authentication: Basic, Bearer, OAuth2, JWT, SSO

x32x01
  • بواسطة x32x01 ||
أول حاجة، ليه Authentication مهم؟
قبل أي نظام يسمحلك تدخل أو تعمل حاجة، لازم يتأكد مين اللي بيستخدمه. Authentication هو البوابة دي 🔒، اللي بيقول للسيستم: "ده صاحب الحساب ولا حد تاني؟".

بعد كده ييجي موضوع Authorization، وده مسؤول عن صلاحيات المستخدم، وده موضوع تاني مش هنا.

أنواع Authentication وإمتى تستخدم كل واحدة 🧐


1️⃣ Basic Auth​

في النوع ده، بتبعت اسم المستخدم والباسورد في هيدر Authorization مشفر بـ Base64.

مميزاته:
  • سهل وسريع للتجارب.
  • مناسب للـ APIs داخلية أو البروتوتايب.

عيوبه:
  • لو مش محمي بـ HTTPS، الباسورد بيتبعت على طبق من فضة 😬.

امتى تستخدمه؟
  • تجارب سريعة أو APIs داخلية غير حساسة.

امتى متستخدمهاش؟
  • في Production من غير HTTPS.
Code:
GET /user HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=



2️⃣ Bearer Tokens - الستاندرد دلوقتي 🚀

في Bearer Tokens، بتبعت توكن في الهيدر:
Code:
Authorization: Bearer <token>
  • السيرفر يشوف التوكن ويخد القرار.
  • Stateless وسهل في scaling.
  • دي الطريقة الشائعة في APIs الحديثة.

امتى تستخدمه؟
  • APIs عامة.
  • خدمات مصغرة (Microservices).
  • تطبيقات ويب وموبايل.



3️⃣ 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



4️⃣ 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);



5️⃣ SSO - Single Sign-On 🏢

المستخدم يسجل مرة واحدة ويدخل على كل التطبيقات اللي جزء من نفس الشركة.
شائع في الشركات والمؤسسات الكبيرة، وبيتعمل غالبًا باستخدام OAuth2 أو SAML.

امتى تستخدمه؟
  • لو عندك منظومة خدمات داخلية.
  • لو عايز تجربة سلسة للمستخدم.



نصائح مهمة للأمان 🔐

1️⃣ دايمًا استخدم HTTPS.
2️⃣ حافظ على JWT signing keys بأمان.
3️⃣ خلي Access Tokens قصيرة في التايم.
4️⃣ وفّر طريقة Token Revocation لو حصل تسريب.
5️⃣ سجل المحاولات الفاشلة وراقب الـ logs.

الخلاصة 📝

  • Basic Auth: سريع وسهل للتجارب، لكن خطر من غير HTTPS.
  • Bearer Tokens: شائع، Stateless، مناسب للـ APIs الحديثة.
  • OAuth2: لتسجيل الدخول بـ Google/Facebook/GitHub.
  • JWT: سريع، Stateless، مناسب للـ Microservices، بس خد بالك من التخزين.
  • SSO: تسجيل دخول مرة واحدة لكل التطبيقات داخل الشركة.
لو نفذتهم صح، هتضمن أمان نظامك وسهولة التعامل مع المستخدمين 🔥.
01.jpg
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
67
x32x01
x32x01
x32x01
الردود
0
المشاهدات
532
x32x01
x32x01
x32x01
الردود
0
المشاهدات
64
x32x01
x32x01
x32x01
الردود
0
المشاهدات
507
x32x01
x32x01
x32x01
الردود
0
المشاهدات
443
x32x01
x32x01
x32x01
الردود
0
المشاهدات
757
x32x01
x32x01
x32x01
الردود
0
المشاهدات
514
x32x01
x32x01
x32x01
الردود
0
المشاهدات
581
x32x01
x32x01
x32x01
الردود
1
المشاهدات
505
x32x01
x32x01
x32x01
الردود
0
المشاهدات
667
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,829
المشاركات
2,027
أعضاء أكتب كود
468
أخر عضو
عبدالله احمد
عودة
أعلى