"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أنواع المصادقة: JWT وOAuth والتكامل الآمن مع Google وFacebook

أنواع المصادقة: JWT وOAuth والتكامل الآمن مع Google وFacebook

تم النشر بتاريخ 2024-10-31
تصفح:675

Authentication Types: JWT, OAuth, and Secure Integration with Google and Facebook

في عالم تطوير الويب الحديث، المصادقة ضرورية لضمان الوصول الآمن إلى التطبيق الخاص بك. هناك طرق متعددة للتعامل مع مصادقة المستخدم، وتشمل بعض الطرق الأكثر شيوعًا JWT (JSON Web Token) وOAuth. في هذه المقالة، سنستكشف هذه الطرق ونوضح لك كيفية دمج المصادقة مع الخدمات الشائعة مثل Google وFacebook، كل ذلك مع الحفاظ على أمان نظامك.

ما هي المصادقة؟

المصادقة هي عملية التحقق من هوية المستخدم الذي يحاول الوصول إلى النظام. عند تسجيل الدخول إلى أحد التطبيقات، تضمن المصادقة أنك الشخص الذي تقوله.

توجد طرق متعددة للتوثيق منها:

  • المصادقة المستندة إلى كلمة المرور: الطريقة الأكثر شيوعًا حيث يقدم المستخدمون اسم مستخدم وكلمة مرور.
  • المصادقة المستندة إلى الرمز المميز: يتلقى المستخدمون رمزًا مميزًا بعد تسجيل الدخول، والذي يستخدم لمصادقة الطلبات اللاحقة.
  • OAuth: يسمح لخدمات الجهات الخارجية بالتحقق من المستخدمين، وتوفير الوصول دون مشاركة كلمات المرور.

ما هو JWT (رمز الويب JSON)؟

JSON Web Token (JWT) هي طريقة شائعة لتأمين واجهات برمجة التطبيقات والتطبيقات ذات الصفحة الواحدة (SPAs). JWT هو رمز مدمج وآمن لعنوان URL يستخدم لنقل المعلومات بشكل آمن بين الأطراف.

إليك ما يتكون منه JWT:

  • الرأس: يحتوي على معلومات حول نوع الرمز المميز وخوارزمية التوقيع (على سبيل المثال، HMAC، RSA).
  • الحمولة: تحتوي على المطالبات أو البيانات التي يتم نقلها (على سبيل المثال، معرف المستخدم، وقت انتهاء الصلاحية).
  • التوقيع: يضمن سلامة الرمز المميز من خلال التحقق من عدم تغيير البيانات.

مثال على JWT

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

يتم إنشاء JWT عن طريق تشفير الرأس والحمولة والتوقيع باستخدام مفتاح سري. يتم بعد ذلك إرسال هذا الرمز المميز إلى العميل (يتم تخزينه عادةً في وحدة التخزين المحلية أو ملفات تعريف الارتباط) وتمريره مع كل طلب لمصادقة المستخدم.

إليك كيفية العمل:

sequenceDiagram
    participant User
    participant Server
    User ->> Server: Sends Login Credentials
    Server ->> User: Sends JWT
    User ->> Server: Requests Data with JWT
    Server ->> User: Verifies Token, Responds with Data

لماذا استخدام JWT؟

  1. عديم الحالة: لا يحتاج الخادم إلى تخزين أي بيانات للجلسة. يحتوي JWT على كافة المعلومات الضرورية.
  2. قابل للتطوير: نظرًا لعدم وجود مساحة تخزين للجلسة على الخادم، فمن الأسهل توسيع نطاق التطبيقات.
  3. الأمان: يضمن التوقيع عدم العبث بالرمز المميز.

ما هو OAuth؟

OAuth هو معيار مفتوح للتفويض. فهو يسمح للمستخدمين بتسجيل الدخول إلى تطبيقات الطرف الثالث باستخدام حساباتهم الحالية (مثل Google وFacebook) دون مشاركة بيانات الاعتماد الخاصة بهم مع تطبيق الطرف الثالث.

يعمل OAuth عن طريق إصدار رموز الوصول التي تسمح لخدمات الجهات الخارجية بالتفاعل مع الأنظمة الأساسية الأخرى نيابة عن المستخدم.

إليك المسار الأساسي لـ OAuth:

sequenceDiagram
    participant User
    participant App
    participant Google/Facebook
    User ->> App: Login with Google/Facebook
    App ->> Google/Facebook: Requests Authorization
    Google/Facebook ->> User: User Authorizes Access
    Google/Facebook ->> App: Sends Access Token
    App ->> User: Authenticated!
  1. ينقر المستخدم على تسجيل الدخول باستخدام Google أو تسجيل الدخول باستخدام Facebook.
  2. يقوم التطبيق بإعادة توجيه المستخدم إلى Google/Facebook للمصادقة.
  3. يوافق المستخدم على السماح بالوصول إلى معلومات محددة (مثل الملف الشخصي والبريد الإلكتروني).
  4. يوفر Google/Facebook رمز الوصول إلى التطبيق.
  5. يستخدم التطبيق الرمز المميز لتقديم طلبات API المعتمدة نيابة عن المستخدم.

لماذا استخدام OAuth؟

  1. السهولة: لا يحتاج المستخدمون إلى إنشاء كلمة مرور أو حساب جديد.
  2. الأمان: لا يشارك المستخدمون أبدًا بيانات الاعتماد الخاصة بهم مباشرة مع تطبيقك.
  3. موحد: يتم دعم OAuth على نطاق واسع بواسطة منصات مثل Google، وFacebook، وTwitter، وما إلى ذلك.

دمج OAuth مع جوجل وفيسبوك

لدمج OAuth مع Google أو Facebook، اتبع الخطوات التالية:

الخطوة 1: إنشاء تطبيق على Google أو Facebook

  • بالنسبة إلى Google، انتقل إلى Google Developer Console وقم بإنشاء مشروع.
  • بالنسبة إلى Facebook، انتقل إلى Facebook Developer Portal وقم بإعداد تطبيق جديد.

الخطوة 2: احصل على معرف العميل وسر العميل

ستتلقى معرف العميل وسر العميل من Google أو Facebook. يتم استخدامها لتحديد طلبك والترخيص به.

الخطوة 3: إعداد OAuth في تطبيقك

إليك مثال لاستخدام Node.js وPassport.js لتنفيذ مصادقة Google:

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(new GoogleStrategy({
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    callbackURL: '/auth/google/callback'
  },
  function(token, tokenSecret, profile, done) {
    // Save the user info from the profile
    return done(null, profile);
  }
));

// Routes for authentication
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/' }),
  function(req, res) {
    // Successful authentication
    res.redirect('/dashboard');
  });

في هذا المثال:

  1. ينقر المستخدم على "تسجيل الدخول باستخدام Google".
  2. يتم إعادة توجيه المستخدم إلى Google للمصادقة.
  3. بعد تسجيل الدخول بنجاح، تعيد Google توجيه المستخدم مرة أخرى إلى تطبيقك باستخدام رمز الوصول.

تأمين المصادقة

يعد الأمان أمرًا بالغ الأهمية عند تنفيذ المصادقة. فيما يلي بعض أفضل الممارسات لتأمين نظام المصادقة الخاص بك:

1. استخدم HTTPS

استخدم دائمًا HTTPS لتشفير البيانات المنقولة بين العميل والخادم. وهذا يمنع المهاجمين من اعتراض المعلومات الحساسة.

2. تنفيذ انتهاء صلاحية الرمز المميز

يجب أن يكون للرموز المميزة (خاصة JWTs) وقت انتهاء الصلاحية لتقليل مخاطر إعادة استخدام الرمز المميز. على سبيل المثال، يمكنك تعيين JWTs بحيث تنتهي صلاحيتها خلال 15 دقيقة واستخدام رموز التحديث لإنشاء رموز مميزة جديدة.

3. تخزين الرموز بشكل آمن

بالنسبة لتطبيقات الويب، قم بتخزين الرموز المميزة في ملفات تعريف الارتباط httpOnly بدلاً من التخزين المحلي. وهذا يمنع الهجمات المستندة إلى JavaScript (مثل XSS) من الوصول إلى الرمز المميز.

4. تدوير الرموز

قم بتدوير الرموز المميزة وإبطال صلاحيتها بشكل دوري لتقليل الضرر الناجم عن تسرب الرموز المميزة.

5. استخدام أسرار العملاء القوية

تأكد من أن معرف العميل وسر العميل قويان ولا يتم كشفهما للعامة أبدًا. قم بتخزينها بشكل آمن باستخدام متغيرات البيئة.

خاتمة

تعد المصادقة جانبًا أساسيًا في أي تطبيق ويب، وهناك طرق مختلفة للتعامل معها. يوفر JWT نهجًا عديم الحالة وقابلاً للتطوير، بينما يوفر OAuth تكاملًا سلسًا مع خدمات الجهات الخارجية مثل Google وFacebook.

من خلال اتباع أفضل الممارسات الأمنية، يمكنك التأكد من أن نظام المصادقة الخاص بك ليس فقط سهل الاستخدام ولكنه آمن أيضًا.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/ivannalon/authentication-types-jwt-oauth-and-secure-integration-with-google-and-facebook-3do6?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang @163.com حذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3