مصادقة MCP عبر OAuth
يدعم Bob Shell بروتوكول OAuth 2.1 لـ MCP servers التي تتطلب وصولاً مفوّضاً من المستخدم. يتولى Bob تدفق المصادقة تلقائياً، بما في ذلك تجديد الـ token، لذا لا تحتاج إلى إدارة الـ tokens يدوياً.
لتهيئة MCP العامة، راجع تهيئة MCP servers.
نظرة عامة
تحتاج بعض MCP servers إلى التصرف نيابةً عنك كمستخدم، على سبيل المثال لقراءة مستودعات GitHub الخاصة بك أو الوصول إلى ملفات Google Drive. تستخدم هذه الـ servers بروتوكول OAuth 2.1 لطلب موافقتك قبل الوصول إلى أي بيانات.
يتولى Bob تدفق OAuth الكامل تلقائياً. عند الاتصال بـ server يتطلب OAuth، يفتح Bob تدفق التفويض في متصفحك. بعد التفويض، يدير Bob تخزين الـ token وتجديده دون مزيد من الخطوات اليدوية.
يختلف هذا عن طرق المصادقة الثابتة مثل Bearer token في headers أو مفتاح API في env، والتي تناسب حسابات الخدمة أو الـ tokens التي لا تنتهي صلاحيتها. استخدم OAuth عندما:
- يحتاج الـ server إلى الوصول إلى موارد مملوكة لحساب مستخدمك
- يُصدر خادم التفويض الخاص بالـ server tokens قصيرة الأجل يجب تجديدها
- تريد تجنب تخزين secrets طويلة الأجل في ملفات تهيئة MCP الخاصة بك
كيف يعمل تدفق المصادقة
- تضيف MCP server مع دعم OAuth إلى ملف تهيئتك (لا حاجة لبيانات اعتماد
headersأوenv) - عند اتصال Bob بالـ server لأول مرة، يكتشف بيانات تفويض OAuth الخاصة بالـ server
- يفتح Bob موجّه مصادقة عبر المتصفح يطلب منك تسجيل الدخول ومنح الموافقة
- بعد التفويض، يخزّن Bob tokens الوصول والتجديد بأمان عبر الجلسات
- يجدّد Bob الـ tokens تلقائياً قبل انتهاء صلاحيتها. لن تُطالَب مرة أخرى ما لم يفشل التجديد.
Bob Shell Authorization Server MCP Server
| | |
|-- connect to server ---------->| |
|<-- OAuth metadata (401) -------| |
|-- open auth prompt ----------->| |
| (user signs in & consents) | |
|<-- authorization code ---------| |
|-- exchange for tokens -------->| |
|<-- access + refresh tokens ----| |
|-- authenticated requests ---------------------------------> |
| (auto-refresh when needed) |تهيئة server مع دعم OAuth
تُعلن MCP servers المدعومة بـ OAuth عن متطلبات تفويضها تلقائياً. في معظم الحالات تحتاج فقط إلى URL الـ server—حقول OAuth اختيارية. يدعم Bob أيضاً خصائص OAuth الاختيارية التالية:
oauth: اضبطه علىfalseلتعطيل OAuth لـ server، أوtrueلتفعيله صراحةًclientId: معرّف عميل OAuth، إذا طلبه خادم التفويضclientSecret: secret عميل OAuth، إذا طلبه خادم التفويضscope: قائمة نطاقات OAuth المطلوبة مفصولة بمسافات
مثال على التهيئة في ~/.bob/mcp_settings.json (عام) أو .bob/mcp.json (مشروع):
{
"mcpServers": {
"my-oauth-server": {
"url": "https://your-server-url.com/mcp"
}
}
}يكتشف Bob متطلب OAuth عند الاتصال ويبدأ التدفق. لا حاجة لبيانات اعتماد headers أو env.
إضافة رأس Authorization ثابت إلى server مع دعم OAuth يعطّل OAuth التلقائي بالكامل. لن يحاول Bob تدفق OAuth. وعلى العكس، عندما يكون OAuth نشطاً، يزيل Bob أي رأس Authorization ثابت قبل إرسال الطلبات. استخدم طريقة واحدة فقط.
المصادقة عند الطلب
عند اتصال Bob بـ server مع دعم OAuth للمرة الأولى:
- تفتح نافذة متصفح مع موجّه التفويض
- راجع الأذونات التي يطلبها الـ server
- سجّل الدخول بالحساب المطلوب ومنح الموافقة
- يخزّن Bob الـ tokens ويكمل الاتصال تلقائياً
يفتح الموجّه في متصفحك الافتراضي. بعد إتمام التفويض، يستأنف Bob Shell الاتصال تلقائياً.
استكشاف الأخطاء وإصلاحها
لا يظهر موجّه المصادقة
- تأكد أن الـ server غير معلّم كمعطّل في تهيئتك
- أعد تشغيل Bob Shell لإعادة بدء اتصال الـ server
- تأكد أن متصفحك لا يحجب صفحة التفويض
المصادقة ناجحة لكن الـ server فشل في الاتصال
- تحقق من صحة URL الـ server وإمكانية الوصول إليه
- تأكد أنك منحت جميع الأذونات المطلوبة خلال خطوة الموافقة
- راجع توثيق الـ server لأي متطلبات إعداد إضافية
تنتهي صلاحية الـ tokens بشكل متكرر وتُطلب إعادة المصادقة
- تأكد أن خادم التفويض يدعم refresh tokens. بعض الـ servers تُصدر tokens للوصول فقط بعمر قصير.
- تأكد من دقة ساعة نظامك، إذ يمكن أن يؤدي انحراف الساعة إلى انتهاء صلاحية الـ token بشكل مبكر
تريد تسجيل الخروج أو تبديل الحسابات
أزل أو أعد تسمية إدخال الـ server في ملف تهيئتك ثم أعد إضافته. هذا يجعل Bob يتعامل معه كـ server جديد ويشغّل موجّه مصادقة جديد عند الاتصال التالي.