محتويات الدورة

FastAPI / المتوسط: تكامل التطبيق والأمن / الدرس 10

المصادقة ومخططات الأمن

افصل استخراج الاعتماد والتحقق وسياسة الجلسة أوالرمز والفاعل الموثوق قبل العمل المحمي.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح افتراضات وحدود موضوع «المصادقة ومخططات الأمن».
  • فسر المثالين الكاملين وعلل المخرجات الملاحظة.
  • شخص الإخفاقات وطبق الحلول المشروحة مع وضوح ملكية الهوية والحالة ودورة الحياة.

مخطط الأمن ليس خدمة هوية كاملة

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

تصنيف الغائب والباطل ونقص السلطة

يعيد الغائب أوالباطل 401 بتحد مناسب، وقد يعيد نقص الإذن 403، وقد تخفي السياسة المورد 404 باتساق. يصرح المثال فرع 401 بعد تعطيل الافتراضي لظهوره بالإصدار. اختبر الرد لتغير الافتراض ولا تكشف الاعتماد أووجود الحساب دون حاجة.

python عرض استخراج اعتماد كامل
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from fastapi.testclient import TestClient
bearer = HTTPBearer(auto_error=False)
app = FastAPI()
@app.get("/parse-only")
def parse_only(value: Annotated[HTTPAuthorizationCredentials | None, Depends(bearer)]):
    if value is None:
        raise HTTPException(status_code=401, detail="Authentication required", headers={"WWW-Authenticate": "Bearer"})
    return {"scheme": value.scheme.lower(), "credential_received": bool(value.credentials)}
with TestClient(app) as client:
    print(client.get("/parse-only").status_code)
    print(client.get("/parse-only", headers={"Authorization": "Bearer public-synthetic-text"}).json())
الناتج المتوقع
401
{'scheme': 'bearer', 'credential_received': True}

يحَلل النص العام ولا يوثق؛ ويثبت الاستلام فقط دون هوية أوصلاحية.

التحقق قبل الثقة بالادعاءات

يمكن فك الصيغة دون أصالة؛ فقيد الخوارزمية وافحص المصدر والجمهور والعمر والمفتاح. تحتاج الكلمة تجزئة مناسبة لا سريعة أوترميزا. تختلف مخاطر التخزين والكوكي وCSRF وXSS والأصل ولا تحلها تبعية واحدة. احفظ السر ودوّره بإجراء. لا تنفذ الدورة مزود هوية أوكلمات أوتوقيعا أوتحققا حقيقيا.

استخدام الحقن لاختبار حد الثقة

يعرف المثال تبعية تمنع افتراضيا ويبدلها بالاختبار بفاعل عام، فيختبر التوصيل لا التشفير أوالخارج، ثم يزيلها. سيبقى إذن المورد حقيقيا مع ضبط الهوية. لا تجعل owner_id المرسل هوية ولا تستنتج السلطة من الوسم والاسم؛ اربط كل محمي بحده وقراره.

python اختبار فاعل موثوق معزول كامل
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException
from fastapi.testclient import TestClient
def current_user():
    raise HTTPException(status_code=401, detail="No lab identity")
app = FastAPI()
@app.get("/me")
def me(user: Annotated[dict, Depends(current_user)]): return {"id": user["id"]}
with TestClient(app) as client:
    print(client.get("/me").status_code)
    app.dependency_overrides[current_user] = lambda: {"id": 7}
    try:
        print(client.get("/me").json())
    finally:
        app.dependency_overrides.clear()
الناتج المتوقع
401
{'id': 7}

تمنع التبعية الأصلية ويحقن الاختبار الهوية فقط؛ وليس مصادقة منشورة أوتحققا من كلمة ورمز.

اختبار الأمن كسلوك ملاحظ

غط الغياب والصيغة والتحقق والانتهاء والجمهور حيث يدعم الحقيقي وهويات مختلفة بأمثلة ومحقق مضبوط لا رموز فعلية. لا تتصل الدورة بمزود أوحساب؛ وتثبت الاستخراج والتبعية فقط. يحتاج الإنتاج مفاتيح وTLS ومعدلا وتدقيقا واستعادة، ويبقى الإذن مستقلا بعد الهوية.

الأخطاء الشائعة وإصلاحها

تعد بيانات رمز مفكوكة هوية موثقة

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

يصرح المسار مخططا دون تحقق

لماذا يحدث؟
حل التوثيق محل الإنفاذ.
كيف تصلحه؟
اربط ونفذ التحقق الفعلي.
كيف تتجنب تكراره؟
اختبر المزور والغائب بالنقل.

يصير بديل الاختبار إعدادا حقيقيا

لماذا يحدث؟
اختلط البناء والاختبار.
كيف تصلحه؟
اعزل البدائل وأزلها.
كيف تتجنب تكراره؟
افصل المحقق الحقيقي والبديل.

اختبر فهمك

1. ماذا يثبت استخراج HTTPBearer قبل التحقق؟

اعرض الحل المشروح

يثبت الشكل فقط لا الملكية والتوقيع والعمر والهوية والإذن؛ فمرره للمحقق قبل السياق الموثوق.

2. مستخدم صحيح لا يملك سجل الآخر. هل يكفي فحص دخول آخر؟

اعرض الحل المشروح

لا؛ الهوية محددة ويلزم قرار الفاعل والهدف والعملية. ثبّت الرفض واختبر الآخر لا تمنح كل رمز كل مورد.

أهم ما تعلمته

  • تستخرج الأدوات الاعتماد وتصفه ولا تتحقق من التوقيع والمصدر والجمهور والانتهاء والإلغاء والإذن.
  • يمكن فك الصيغة دون أصالة؛ فقيد الخوارزمية وافحص المصدر والجمهور والعمر والمفتاح.
  • غط الغياب والصيغة والتحقق والانتهاء والجمهور حيث يدعم الحقيقي وهويات مختلفة بأمثلة ومحقق مضبوط لا رموز فعلية.

المراجع الرسمية