التوثيق والأمان في التطبيقات
موضوع التوثيق يعتبر من أهم النقاط في الأنظمة و التطبيقات، لأنه يتعلق بحماية بيانات المستخدمين وضمان أمانهم. هو من أكثر النقاط حساسية، لأن أي خلل فيه ممكن يسبب مشاكل كبيرة وممكن تأثر على سمعة و ثقة التطبيق.
عشان كذا، مهم نعرف كيف العناصر تتواصل مع بعضها البعض حتى تتأكد من موثوقية المستخدم، وكيف نقدر نضمن أن كل شيء يشتغل بشكل آمن وسلس. فهم هذه العملية يساعدنا نختار الطريقة الأنسب لتطبيقاتنا ونحمي بيانات المستخدمين بشكل أفضل.
بشكل تقني احنا فين بنتكلم؟

الرسم البياني اعلاه المفروض يشرح هذه المقالة راح تتكلم عن ايش بالزبط. والي هوا: كيف نتحقق من صحة بيانات الشخص الي بيطلب تسجيل الدخول
النقاط الي راح نتكلم عنها في هذه المقالة:
- كيف نطبق التحقق من صحة البيانات المدخلة مع المخزنة
- الخدمات السحابية: Firebase وAuth0
كيف نطبق التحقق من صحة البيانات المدخلة مع المخزنة
خلينا نتكلم عن كيفية التحقق من صلاحية البيانات المدخلة مع المخزنة باستخدام FastAPI في بايثون. الهدف هنا هو التأكد من أن اسم المستخدم وكلمة المرور المدخلة من قبل المستخدم تتطابق مع البيانات المخزنة في قاعدة البيانات.
خطوات التحقق من صحة البيانات:
استقبال البيانات المدخلة:
- المستخدم يدخل اسم المستخدم وكلمة المرور في واجهة التطبيق.
- يتم إرسال هذه البيانات إلى السيرفر عبر FastAPI.
البحث في قاعدة البيانات:
- نبحث عن اسم المستخدم في قاعدة البيانات.
- إذا كان اسم المستخدم موجود، نسترجع كلمة المرور المخزنة.
التحقق من كلمة المرور:
- نقارن كلمة المرور المدخلة مع الكلمة المخزنة بعد تشفيرها.
- نستخدم مكتبة مثل
bcrypt
للتحقق من تطابق كلمات المرور.
إرجاع النتيجة:
- إذا كانت البيانات صحيحة، نرجع للمستخدم توكن JWT أو رسالة نجاح.
- إذا كانت البيانات غير صحيحة، نرجع رسالة خطأ توضح المشكلة.
تطبيق الخطوات عن طريق Python - FastAPI
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from passlib.context import CryptContext
app = FastAPI()
# نموذج البيانات المدخلة
class UserLogin(BaseModel):
username: str
password: str
# إعدادات التشفير
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
# قاعدة بيانات وهمية
fake_db = {
# كلمة مرور مشفرة
"user1": "$2b$12$KIXQ9KIXQ9KIXQ9KIXQ9KIXQ9KIXQ9KIXQ9KIXQ9KIXQ9KI"
}
# دالة هدفها التأكد من تطابق كلمة المرور المدخلة و كلمة المرور المخزنة
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
@app.post("/login")
def login(user: UserLogin):
if user.username in fake_db:
hashed_password = fake_db[user.username]
if verify_password(user.password, hashed_password):
return {"message": "تسجيل الدخول ناجح. مبروك، أنت فعلاً أنت!"}
else:
raise HTTPException(status_code=400, detail="كلمة المرور غير صحيحة. حاول مرة ثانية!")
else:
raise HTTPException(status_code=404, detail="اسم المستخدم غير موجود؟")
الخدمات السحابية مثل: Firebase وAuth0
في الجزء السابق اتكلمنا عن ابسط طريقة ممكن للتوثيق، بحيث انك تاخذ المعلومات المدخلة وتتحقق منها مع قاعدة البيانات. لكن الموضوع قد يكون اعقد من كذا في الحياة الواقعية. وكمان خصوصا لما تطور تطبيق، خصائص مثل تسجيل الدخول، تسجيل الخروج، وإنشاء الحساب، هي خصائص أساسية. و العمليات هذه تتكرر في كل التطبيقات تقريبًا. فأعتقد من غير العملي إنك تعيد تطويرها من الصفر كل مرة. هنا يجي دور الخدمات السحابية زي Firebase وAuth0، اللي تقدم لك حلول جاهزة وسهلة.
تسريع عملية التطوير
تطوير نظام توثيق آمن من البداية ياخذ وقت وجهد كبير، خصوصًا بالجوانب الأمنية. باستخدام Firebase أو Auth0، تقدر توفر الوقت والجهد وتعتمد على حلول جاهزة، وتقدر تركز على تطوير ميزات تطبيقك و تركز إنك تحل المشكلة بدال ما تعيد اختراع العجلة. بالإضافة انه تقدر تستخدم نماذج واجهات المستخدم الجاهزة لتسريع عملية التطوير بدال لا تقعد تطور صفحات تسجيل الدخول والتسجيل من الصفر.
الأمان المتقدم
الأمان جزء مهم جدًا في أي نظام توثيق. خدمات زي Auth0 وFirebase تُدار من فرق متخصصة في الأمن السيبراني، وتطبق أحدث الممارسات لحماية بيانات المستخدمين، زي التحقق الثنائي (Two-Factor Authentication) والتشفير المتقدم، عشان توفر بيئة آمنة وتقلل المخاطر الأمنية.
التوافق مع المعايير الحديثة
خدمات زي Auth0 وFirebase تعتمد على معايير عالمية معروفة زي OAuth 2.0 وOpenID Connect، وهذا يخليها متوافقة مع الأنظمة والتطبيقات الثانية، ويضمن إنها تطبق أفضل ممارسات الأمان. المعايير هذه تسهل التكامل بين التطبيقات وتخلي التوثيق سهل وآمن.
دعم طرق توثيق متعددة
الكثير من المستخدمين يفضلون تسجيل الدخول بحساباتهم على جوجل أو فيسبوك أو تويتر. باستخدام Firebase أو Auth0، تقدر توفر هالخيارات بسهولة، وهذا يسهم في تحسين تجربة المستخدم ويخلي التسجيل أكثر راحة.