مصادقة واجهة برمجة التطبيقات (API Authentication): مفاتيح API مقابل JWT مقابل OAuth 2.0

لقد قمت ذات مرة بإطلاق واجهة برمجة تطبيقات (API) بدون مصادقة. كنت أظن أنها مجرد أداة داخلية بسيطة. وبعد أسبوعين، قام بوت تابع لمنافس بكشط (scraping) قاعدة بياناتنا في الساعة الثالثة صباحاً. كلفتني تلك الغلطة 1,200 دولار في فواتير AWS ومحادثة محرجة مع مديري.

المصادقة ليست أمراً ممتعاً. ولكن إذا أخطأت فيها، فستوقظك في الثالثة صباحاً بتنبيه طارئ.

إليك كيفية الاختيار بين الأنماط الثلاثة الرئيسية.

  • API Keys هذه عبارة عن سلاسل نصية عشوائية طويلة. يرسلها العميل (client) مع كل طلب. وهي بسيطة وسريعة.

استخدمها لـ: • واجهات برمجة التطبيقات العامة مثل بيانات الطقس أو الأسهم. • التواصل من خادم إلى خادم (Server to server). • بناء نموذج أولي لفكرة جديدة. • الخدمات المصغرة (microservices) الداخلية.

  • JWT (JSON Web Tokens) هذه عبارة عن رموز (tokens) موقعة. وهي تحمل معلومات المستخدم وصلاحياته داخل الرمز نفسه. لا تحتاج إلى البحث في قاعدة البيانات للتحقق من صحتها.

استخدمها لـ: • الخدمات المصغرة حيث تقوم كل خدمة بالتحقق من صحة البيانات بنفسها. • تطبيقات الهاتف وتطبيقات الصفحة الواحدة (single page applications). • واجهات برمجة التطبيقات ذات الحركة العالية التي تحتاج إلى التوسع (scale).

تحذير: لا تضع الكثير من البيانات في JWT. اجعلها صغيرة. قم بتضمين معرف المستخدم (user ID) والأدوار (roles) فقط.

  • OAuth 2.0 هذا بروتوكول للتفويض (delegation). يتيح للمستخدم منح حق الوصول إلى بياناته دون مشاركة كلمة المرور. فكر في "تسجيل الدخول باستخدام Google".

استخدمه لـ: • التكامل مع أطراف ثالثة (Third party integrations). • الأنظمة التي يمنح فيها المستخدمون أذونات محددة لتطبيقات مختلفة. • برمجيات الشركات (Enterprise software).

تجنبه في: • واجهات برمجة التطبيقات الداخلية البسيطة. • الفرق الصغيرة التي تحتاج إلى الإطلاق بسرعة.

دليل اتخاذ القرار السريع:

• واجهة برمجة تطبيقات عامة: استخدم API Keys. • خدمات مصغرة داخلية: استخدم API Keys. • الخلفية البرمجية لتطبيقات الهاتف: استخدم JWT. • برمجيات الخدمة (SaaS) مع أدوار للمستخدمين: استخدم JWT. • وصول الأطراف الثالثة: استخدم OAuth 2.0.

القاعدة الذهبية الخاصة بي:

  1. ابدأ بـ API Keys للخدمات الداخلية.
  2. أضف JWT عندما تحتاج إلى مصادقة المستخدم.
  3. استخدم OAuth 2.0 فقط عندما يطلب العميل ذلك أو عندما تبني منصة (platform).

لا تبنِ نظاماً مثالياً لا يتم إطلاقه أبداً. ابنِ نظاماً آمناً يعمل بالفعل.

ما هو نمط المصادقة الذي تستخدمه؟ أخبرني في التعليقات.

المصدر: https://dev.to/sirmax/api-authentication-in-2026-api-keys-vs-jwt-vs-oauth-20-when-to-use-what-h7c