سواء كنت مطورًا ذو خبرة أو كنت قد بدأت للتو، فإن ضمان أمان واجهات برمجة التطبيقات (APIs) الخاصة بك أمر بالغ الأهمية. FastAPI، هو إطار ويب حديث وسريع (عالي الأداء) لبناء واجهات برمجة التطبيقات باستخدام بايثون 3.7+، يقدم حلاً ممتازًا. اليوم، سنتعمق في تفاصيل مصادقة FastAPI، نستكشف كيفية تنفيذها، ولماذا هي نقطة تحول لمشاريعك. بالإضافة إلى ذلك، سنتطرق إلى كيفية عمل أدوات مثل Apidog على تسهيل حياتك أكثر.
لماذا FastAPI لواجهات برمجة التطبيقات الخاصة بك؟
قبل أن نتطرق إلى التفاصيل الدقيقة للمصادقة، دعنا نتحدث عن سبب اختيارك لـ FastAPI في المقام الأول. تم تصميم FastAPI ليكون سريعًا وبسيطًا، مما يتيح لك بناء ونشر واجهات برمجة تطبيقات عالية الأداء بسرعة. إنه مبني على Starlette لأجزاء الويب وPydantic لأجزاء البيانات، مما يعني أنك ستحصل على السرعة والموثوقية كليهما.

المزايا الرئيسية لـ FastAPI
- الأداء: FastAPI هو واحد من أسرع أطر بايثون المتاحة.
- سهولة الاستخدام: تركيبته بديهية ومباشرة، مما يجعلها متاحة حتى للمبتدئين.
- وثائق API تفاعلية تلقائيًا: يقوم FastAPI بإنشاء وثائق واجهة برمجة التطبيقات التفاعلية تلقائيًا باستخدام Swagger UI وReDoc.
- أمان النوع: من خلال الاستفادة من تلميحات نوع بايثون، يضمن FastAPI شفرة قوية وخالية من الأخطاء.
أهمية المصادقة
عند بناء واجهات برمجة التطبيقات، فإن تأمينها باستخدام آليات المصادقة أمر أساسي لحماية البيانات الحساسة وضمان أن المستخدمين المخويل لهم فقط يمكنهم الوصول إلى نقاط نهاية معينة. تساعد المصادقة في التحقق من هوية المستخدمين أو الأنظمة التي تتفاعل مع واجهة برمجة التطبيقات الخاصة بك، مما يوفر طبقة من الأمان والثقة.
أنواع المصادقة
يدعم FastAPI أنواعًا متعددة من المصادقة، بما في ذلك:
- المصادقة الأساسية: طريقة بسيطة تستخدم اسم المستخدم وكلمة المرور.
- OAuth2: طريقة أكثر أمانًا ومرونة، غالبًا ما تُستخدم للمصادقة من طرف ثالث.
- JWT (JSON Web Tokens): طريقة مضغوطة ومحتواة ذاتيًا لنقل المعلومات بأمان.
إعداد مصادقة FastAPI
الآن، دعنا ندخل في صميم الموضوع - إعداد المصادقة في FastAPI. سنغطي تنفيذًا أساسيًا لـ OAuth2 مع كلمة مرور (وتجزئة)، وهو أحد أكثر الطرق شيوعًا وأمانًا للتعامل مع المصادقة.
الخطوة 1: تثبيت FastAPI والمتطلبات
أولاً، تأكد من أنك قد قمت بتثبيت FastAPI والمتطلبات اللازمة. يمكنك القيام بذلك باستخدام pip:
pip install fastapi[all] uvicorn
التعليمات [all] تقوم بتثبيت جميع المتطلبات اللازمة للمصادقة، بما في ذلك pydantic وpython-jose لـ JWT.
الخطوة 2: إنشاء تطبيق FastAPI أساسي
لنبدأ بتطبيق FastAPI بسيط. قم بإنشاء ملف باسم main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
يمكنك تشغيل هذا التطبيق باستخدام Uvicorn:
uvicorn main:app --reload
الخطوة 3: تنفيذ OAuth2 مع كلمة مرور
OAuth2 هو إطار مصادقة مستخدم بشكل واسع يوفر تدفقات مصادقة محددة لأنواع مختلفة من التطبيقات. سنستخدم OAuth2 مع كلمة مرور (وتجزئة) لإدارة المصادقة.
إنشاء نماذج المستخدم
أولاً، قم بتعريف نماذج المستخدم. أنشئ ملفًا باسم models.py:
from pydantic import BaseModel
class User(BaseModel):
username: str
email: str
full_name: str
disabled: bool = False
class UserInDB(User):
hashed_password: str
أداة تجزئة كلمة المرور
بعد ذلك، ستحتاج إلى أداة لتجزئة والتحقق من كلمات المرور. أنشئ ملفًا باسم security.py:
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
تدفق كلمة المرور OAuth2
الآن، قم بتكوين تدفق كلمة مرور OAuth2. قم بتحديث ملف main.py ليشمل ما يلي:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jose import JWTError, jwt
from pydantic import BaseModel
from typing import Optional
import time
# مفتاح سري لتشفير JWT
SECRET_KEY = "your_secret_key"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# محاكاة قاعدة بيانات المستخدمين
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "جون دو",
"email": "johndoe@example.com",
"hashed_password": "$2b$12$...",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: Optional[str] = None
def authenticate_user(fake_db, username: str, password: str):
user = fake_db.get(username)
if not user:
return False
if not verify_password(password, user["hashed_password"]):
return False
return user
def create_access_token(data: dict, expires_delta: Optional[int] = None):
to_encode = data.copy()
if expires_delta:
expire = time.time() + expires_delta
else:
expire = time.time() + ACCESS_TOKEN_EXPIRE_MINUTES * 60
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="اسم المستخدم أو كلمة المرور غير صحيحة",
headers={"WWW-Authenticate": "Bearer"},
)
access_token = create_access_token(data={"sub": user["username"]})
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me", response_model=User)
async def read_users_me(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="تعذر التحقق من بيانات الاعتماد",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except JWTError:
raise credentials_exception
user = fake_users_db.get(username, None)
if user is None:
raise credentials_exception
return user
هذا الكود يقوم بإعداد تدفق كلمة مرور OAuth2 بسيط. يمكن للمستخدمين الحصول على رمز عن طريق تقديم اسم المستخدم وكلمة المرور الخاصة بهم إلى نقطة النهاية /token، ويمكنهم استخدام هذا الرمز للمصادقة على أنفسهم في نقاط النهاية المحمية مثل /users/me.
الخطوة 4: اختبار مصادقتك
لاختبار مصادقتك، يمكنك استخدام أداة اختبار واجهة برمجة التطبيقات مثل Postman أو Apidog. إليك كيفية القيام بذلك باستخدام Apidog:
إنشاء طلب جديد: افتح Apidog وأنشئ طلبًا جديدًا.





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

فوائد استخدام Apidog
- إدارة شاملة لواجهات برمجة التطبيقات: تصميم، اختبار، وتوثيق واجهات برمجة التطبيقات الخاصة بك في مكان واحد.
- التعاون: العمل مع فريقك في الوقت الحقيقي، مشاركة نقاط النهاية، ومراجعة التغييرات.
- استجابات محاكاة: محاكاة ردود واجهة برمجة التطبيقات للاختبار دون الوصول إلى نقاط النهاية الفعلية.
استنتاج
يسهل FastAPI عملية بناء وتأمين واجهات برمجة التطبيقات، مما يجعله خيارًا رائعًا للمطورين الذين يبحثون عن الأداء وسهولة الاستخدام. من خلال تنفيذ المصادقة باستخدام FastAPI، تضمن أن واجهات برمجة التطبيقات الخاصة بك آمنة ومخصصة فقط للمستخدمين المخولين. بالإضافة إلى ذلك، يمكن أن تعزز الاستفادة من أدوات مثل Apidog تجربتك في تطوير واجهة برمجة التطبيقات من خلال توفير إدارة قوية وقدرات الاختبار.
الآن بعد أن عرفت كيفية تنفيذ مصادقة FastAPI، يمكنك تأمين واجهات برمجة التطبيقات الخاصة بك بثقة وحماية بياناتك. شكرًا لك على البرمجة!
