المقدمة

أثناء تعاملنا مع ال APIs بنحتاج نعمل User Authentication واللي هي عبارة عن عملية التحقق من هوية المستخدم اللي باعت ال Request, ودا جانب هام جدُا في حماية الـ API وكذلك خصوصية وأمان المستخدمين.

 فورقة وقلم و تعالوا نتعرف على أشهر 5 طرق من ال User Authentication Methods. 🚀


Basic Authentication 

دا أبسط نوع وفيه بنبعت اسم المستخدم وكلمة المرور في ال Request في صيغة Base64 , طبعًا النوع دا منخفض الأمان ومش بنستخدمه في الـ Production  Environment إلا علي HTTPS Connection, لأن ال Base64 Encoding بيتحل بأي Decoder على الإنترنت فلو ال Eequest اتعرض ل Eavesdrop Attack يقدر المهاجم بسهولة يعرف بيانات المستخدم.

الاستخدام المناسب:

  • مناسب للاستخدام في وقت التطوير أو الـ Testing 
  • ممكن نستخدمه في التطبيقات الداخلية واللي ضامنين إنها على شبكة آمنة.
GET /protected-resource HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

API Key Authentication

ال API Keys عبارة عن مفاتيح أو "رموز تعريف" بيصدرها ال API لل Clients ودور ال Client أنه يبعتها مع كل Request لل API كوسيلة تحقق من هوية المستخدم. ال Client ممكن يبعتها ك Query String أو يحطها في ال Request Header أو حتي ك Cookie.

وزي ال Basic Authentication لازم نستخدمه علي HTTPS Connection لأن لو أي حد عرف ال API Key هيقدر ينتحل شخصية ال Client ويستعمل ال API باسمه. 

الاستخدامات المناسبة:

  • بتكون في بيئات التطوير و الاختبار أو في التطبيقات الداخلية
  • ممكن نستخدمه في الـ Production ولكن مع وسائل أخري نزود بيها معامل الأمان.
💡
ونلاحظ واحدة من أهم عيوب الـ API Key إنه مش بيدي User-Specific Permissions لأنه مصمم بالأساس عشان يستخدم بين ال Apps أو ال Services وبعضها.
API Authentication Methods
API Authentication Methods

JWT-Based Authentication

ال JWT من أفضل و أشهر الطرق المستخدمة في الـ Authentication ونقدر نقول إنها شبه فكرة الـ API Key ولكن المفتاح - في الحالة دي ال Token - بيكون Encrypted بطريقة أحسن من الـ API Key.

ومن أكبر مميزاتها إنك مش مضطر تخزن ال Token لكل Client علي ال Server زي ما بنعمل مع الـ API Keys وده بيخليها طريقة Scalable واتكلمنا عن ال JWT  في ورقة كاملة نشجعكم تقرأوها.

Json Web Token In a Nutshell
الـ JWT عبارة عن Secure Tokens بيتبعت مع كل Request أو Response عشان نتأكد ان البيانات بين الطرفين متغيرتش، كونها طريقة سهلة وفعالة بيخليها واحدة من أكثر الطرق المستخدمة في الـ User Authentication and Authorization.

Json Web Token In a Nutshell


OAuth 2.0

الطريقة دي مستخدمة عشان نعمل User Authentication للمستخدم بدون ما نعرف اسمه أو كلمة مروره بشكل حقيقي ودا مناسب في حالة الـ Third-Party Authentication واللي تعتبر شكل شائع من أشكال الـ Authentication هذه الأيام.

ال OAuth 2.0 شرحناها قبل كدا في ورقة وقلم بشكل بسيط تقدروا تقرأوها من هنا.

Open Auth - OAuth 2
ال Open authorization هو Standard أو authorization framework أو طريقة متفق عليها بنستخدمها في ال Delegated third party access وليه اصدارين الاول والثاني, الفرق بينهم كبير و هنا هنتكلم عن طريقة عمل Oauth 2 بما أنه الأسهل والأكثر انتشارًا حاليًا

Open Auth - OAuth2


OpenID Connect 

ال OpenID هو Authentication Protocol مبني فوق ال OAuth. وهو بيبقي عبارة عن خدمة بيقدمها Identity Provider وكل لما المستخدم يحتاج يدخل موقع بيرجع لموفر الخدمة يأخذ البيانات الأساسية زي الاسم والبريد والصورة الشخصية ويتأكد من هوية المستخدم.

💡
ومن أشهر استخداماته ال Single Sign-On - SSO

ونلاحظ الفرق بينه وبين ال OAuth  في كون ال OAuth مهتم بال Authorization و بصلاحيات المستخدم من غير ما اعرف اي حاجة عنه غير ال Authorization Token. بينما في ال OpenID أنا مهتم باني اعرف المعلومات الأساسية عن هوية المستخدم


المصادر:

What Is API Authentication? Benefits, Methods & Best Practices | Postman
Learn how API authentication helps teams protect sensitive data, build trust with users, and safeguard their company’s reputation.
Common API Authentication Methods: Use Cases and Benefits
Securing your API requires thoughtful authentication. Learn about API authentication methods like OAuth, JWTs, API keys and basic auth, and more!
5 Best API Authentication Methods to Dramatically Increase the Security of Your APIs
In this article, we discussed the pros, cons and use cases of common API authentication protocols along with a smart way for enabling quick and easy authentication