تعلم Authentica..: 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
المشاهدات
166
x32x01
x32x01
x32x01
الردود
1
المشاهدات
773
x32x01
x32x01
x32x01
الردود
0
المشاهدات
208
x32x01
x32x01
x32x01
الردود
0
المشاهدات
795
x32x01
x32x01
x32x01
الردود
0
المشاهدات
494
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,509
المشاركات
2,702
أعضاء أكتب كود
577
أخر عضو
سراب
عودة
أعلى