فتح قوة مصادقة FastAPI: تأمين واجهات برمجة التطبيقات الخاصة بك بسهولة

تعلم كيفية تأمين واجهات برمجة التطبيقات الخاصة بك باستخدام مصادقة FastAPI. تشمل هذه الدليل الشامل تنفيذ OAuth2، تجزئة كلمات المرور، واستخدام أدوات مثل Apidog.com لتبسيط تطوير واجهة برمجة التطبيقات. ابدأ مع FastAPI اليوم وابنِ واجهات برمجة تطبيقات آمنة وعالية الأداء بسهولة.

Amir Hassan

Amir Hassan

13 أغسطس 2025

فتح قوة مصادقة FastAPI: تأمين واجهات برمجة التطبيقات الخاصة بك بسهولة

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

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

button

لماذا FastAPI لواجهات برمجة التطبيقات الخاصة بك؟

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

إطار FastAPI، عالي الأداء، سهل التعلم، سريع في كتابة التعليمات البرمجية، جاهز للإنتاج

المزايا الرئيسية لـ FastAPI

  1. الأداء: FastAPI هو واحد من أسرع أطر بايثون المتاحة.
  2. سهولة الاستخدام: تركيبته بديهية ومباشرة، مما يجعلها متاحة حتى للمبتدئين.
  3. وثائق API تفاعلية تلقائيًا: يقوم FastAPI بإنشاء وثائق واجهة برمجة التطبيقات التفاعلية تلقائيًا باستخدام Swagger UI وReDoc.
  4. أمان النوع: من خلال الاستفادة من تلميحات نوع بايثون، يضمن FastAPI شفرة قوية وخالية من الأخطاء.

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

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

أنواع المصادقة

يدعم FastAPI أنواعًا متعددة من المصادقة، بما في ذلك:

إعداد مصادقة 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

فوائد استخدام Apidog

  1. إدارة شاملة لواجهات برمجة التطبيقات: تصميم، اختبار، وتوثيق واجهات برمجة التطبيقات الخاصة بك في مكان واحد.
  2. التعاون: العمل مع فريقك في الوقت الحقيقي، مشاركة نقاط النهاية، ومراجعة التغييرات.
  3. استجابات محاكاة: محاكاة ردود واجهة برمجة التطبيقات للاختبار دون الوصول إلى نقاط النهاية الفعلية.

استنتاج

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

الآن بعد أن عرفت كيفية تنفيذ مصادقة FastAPI، يمكنك تأمين واجهات برمجة التطبيقات الخاصة بك بثقة وحماية بياناتك. شكرًا لك على البرمجة!

button

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات