feat(mcp): שער Bearer לתחבורת ה-HTTP (#231.2) #426
Reference in New Issue
Block a user
Delete Branch "worktree-mcp-http-auth"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
למה
ב-
stdioההגנה היא הצינור עצמו — רק תהליך שכבר רץ כמשתמש הזה יכול לדבר עם השרת.streamable-httpמבטל את התכונה הזו לחלוטין: כל מי שמגיע ל-socket יכול לקרוא לכל אחד מ-108 הכלים, ובמרשם ישcase_delete,precedent_library_delete,document_uploadוכל כלי כתיבת-הבלוקים.מאזין לא-מאומת הוא, הלכה למעשה, endpoint למחיקת תיקים. זהו החסם שנקבע ב-#231.1 ככזה שחייב לנחות לפני חשיפה כלשהי.
שלב 2 מתוך 5 ב-#231.
מה
מימוש דרך ה-
TokenVerifierשל ה-SDK ו-BearerAuthBackendשלו — לא middleware משלנו. מסלול-אימות אחד, של המסגרת (G2).ההחלטות שקובעות את בטיחות הפיצ'ר:
MissingTokenErrorקטלנית. החלופה המפתה — לעלות ולרשום warning — מייצרת מאזין שנראה בריא ועונה על כל קריאה הרסנית. סירוב-אתחול הוא הכשל הבטוח (§6).main(): FastMCP מקבלtoken_verifierו-authכארגומנטי-בנאי, ולכן טוקן חסר חייב להיכשל לפני שה-listener קיים — לא אחרי שהוא כבר מקבל חיבורים.stdioלא נוגע. דרישת טוקן שם הייתה שוברת כל סשן אינטראקטיבי בלי שום רווח אבטחתי.hmac.compare_digest) — ==נאיבי מדליף את הטוקן בייט-בייט לתוקף שמודד זמנים.verify_tokenמחזירNoneולא זורק — זה אות ה"דחייה" של הפרוטוקול, ומניב 401 נקי במקום 500 שנקרא ככשל-שרת.אימות — הרצה חיה
POSTבליAuthorizationPOSTעם טוקן שגויPOSTעם הטוקן הנכוןmcp__legal-ai__case_getInvariants
leak_guardירוק.agent_tool_grants_guardירוק.מה עוד חסר לפני שזה שמיש
MCP_HTTP_TOKEN, הסוד עצמו טרם נוצר (טעון_GUIDELINES/SAVE_SECRET_RULESואישור-יו"ר).שניהם ב-#231.3.