پرش به محتوا
شروع رایگان

احراز هویت MCP: تفاوت کلید Bearer و OAuth 2.1، و کدام را کِی انتخاب کنیم

دو راه اتصال امن دستیار هوش مصنوعی به سرور MCP — و اینکه چرا PKCE و resource indicator اهمیت دارند

احراز هویت MCP: تفاوت کلید Bearer و OAuth 2.1، و کدام را کِی انتخاب کنیم

وقتی یک کلاینت هوش مصنوعی به سرور MCP وصل می‌شود، باید به‌نوعی خودش را معرفی کند. دو الگوی رایج وجود دارد: یک کلید Bearer ساده یا یک جریان کامل OAuth 2.1. این مقاله تفاوت عملی این دو را توضیح می‌دهد و می‌گوید کِی کدام مناسب‌تر است.

کلید Bearer ساده چیست؟

یک رشته‌ی طولانی که در هدر Authorization: Bearer <کلید> فرستاده می‌شود. ساخت آن یک کلیک است، تنظیمش در کلاینت هم همین‌قدر ساده — کپی و پیست. مناسب کلاینت‌های دسکتاپ و CLI (Claude Code، Cursor، ابزارهای اتوماسیون مثل n8n) که کاربر مستقیم کنترلشان را دارد و یک کلید در فایل تنظیمات محلی نگه می‌دارد.

OAuth 2.1 چه چیزی اضافه می‌کند؟

وقتی کلاینت خودش یک اپلیکیشن با کاربران متعدد است (نه یک ابزار شخصی)، کلید ثابت مشکل‌ساز می‌شود — نمی‌دانید چه کسی واقعاً پشت هر درخواست است و نمی‌توانید دسترسی یک کاربر را بدون لغو کلید همه لغو کنید. OAuth این را با یک جریان تأیید تعاملی حل می‌کند: کاربر یک بار صفحه‌ی تأیید سرور را می‌بیند، اجازه می‌دهد، و سرور برای همان کاربر یک نشست جداگانه صادر می‌کند.

PKCE چیست و چرا اجباری است؟

PKCE (Proof Key for Code Exchange) جلوی سرقت «کد مجوز» را در وسط جریان OAuth می‌گیرد — کلاینت پیش از شروع یک رمز تصادفی می‌سازد و فقط هش آن را می‌فرستد؛ در پایان باید خودِ رمز اصلی را نشان دهد. بدون PKCE، اگر کد مجوز در مسیر افشا شود (مثلاً از طریق یک redirect ناامن)، مهاجم می‌تواند آن را برای خودش تبدیل به توکن کند. توصیه‌ی فعلی این است که فقط نسخه‌ی S256 پذیرفته شود، نه نسخه‌ی ساده‌ی plain.

Resource Indicator (RFC 8707) روی سرویس چندمستأجره چرا مهم است؟

روی یک سرویس ابری با چند فضای کاری، اگر توکن OAuth «مخصوص کدام مستأجر» را در خودش حمل نکند، یک توکن معتبر برای یک فضای کاری ممکن است روی فضای کاری دیگر هم پذیرفته شود. مشخصه‌ی resource در درخواست دقیقاً همین را می‌بندد: توکن فقط برای همان مقصدی که در لحظه‌ی درخواست تعیین شده معتبر است.

جمع‌بندی: کدام را انتخاب کنم؟

برای استفاده‌ی شخصی یا تیمی کوچک با کلاینت CLI/دسکتاپ، کلید Bearer ساده کافی و سریع‌تر است. برای کلاینتی که خودش چند کاربر دارد یا نیاز به لغو دسترسی تک‌نفره دارید، OAuth 2.1 گزینه‌ی درست است. سرور MCP ابرک هر دو را همزمان پشتیبانی می‌کند — جزئیات فعال‌سازی هرکدام در آموزش اتصال آمده است.

ماتریس انتخاب: کدام روش برای کدام موقعیت

موقعیتروش پیشنهادیدلیل
اسکریپت داخلی روی سرور خودتانکلید Bearerکاربر نهایی وجود ندارد که هویتش لازم باشد
کلاینت دسکتاپ کاربرOAuth 2.1 + PKCEکلید نباید روی دستگاه کاربر ذخیره شود
سرویس چندمستأجرهOAuth با Resource Indicatorتوکن باید فقط برای یک مستأجر معتبر باشد
یکپارچه‌سازی ماشین‌به‌ماشین ثابتکلید Bearer با چرخش دوره‌ایسادگی، با پذیرش مسئولیت نگهداری کلید
دسترسی موقت به پیمانکارOAuth با انقضای کوتاهابطال بدون تغییر کلید بقیه

چرخهٔ عمر کلید؛ بخشی که معمولاً فراموش می‌شود

  • تولید: هر کلاینت کلید خودش را بگیرد. کلید مشترک یعنی ابطال یکی، قطع همه.
  • محدودسازی: دامنهٔ دسترسی، سقف نرخ و فهرست ابزارهای مجاز روی همان کلید تعریف شود.
  • چرخش: تاریخ انقضا از ابتدا ست شود؛ کلید بی‌انقضا دیر یا زود جایی لو می‌رود.
  • ابطال: مسیر ابطال فوری باید از قبل تست شده باشد، نه در لحظهٔ حادثه.
  • پایش: استفادهٔ غیرعادی (ساعت، حجم، ابزار غیرمنتظره) هشدار بدهد.

یک اشتباه رایج

گذاشتن کلید در URL — چه به‌عنوان پارامتر کوئری، چه داخل مسیر. کلید در URL در لاگ سرور، تاریخچهٔ مرورگر و هدر Referer ذخیره می‌شود و عملاً دیگر محرمانه نیست. کلید فقط در هدر Authorization جای دارد.

مدل تهدید کامل در MCP چقدر امن است، چک‌لیست عملیاتی در امنیت کلیدهای MCP و جداسازی مستأجرها در انزوای داده.

دکتر محمد مصطفی‌زاده
دربارهٔ نویسنده دکتر محمد مصطفی‌زاده — دکترای صنایع غذایی، ۲۱ سال تجربهٔ اجرایی در راه‌اندازی رستوران ایرانی و فرنگی، کاست کنترل و کترینگ صنعتی. مشاورهٔ راه‌اندازی رستوران ←

MCP چقدر امن است؟ تحلیل مدل تهدید برای اتصال AI به ERP

ابرک را رایگان امتحان کنید

شروع رایگان