Gateway
معناشناسی اعتبارنامههای احراز هویت
این سند معنای معیارهای واجد شرایط بودن و حلوفصل اعتبارنامه را که در موارد زیر استفاده میشود، بهصورت مرجع تعریف میکند:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
هدف این است که رفتار زمان انتخاب و زمان اجرا همراستا بماند.
کدهای دلیل پایدار probe
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
اعتبارنامههای توکن
اعتبارنامههای توکن (type: "token") از token درونخطی و/یا tokenRef پشتیبانی میکنند.
قواعد واجد شرایط بودن
- وقتی هر دو
tokenوtokenRefوجود نداشته باشند، یک پروفایل توکن واجد شرایط نیست. expiresاختیاری است.- اگر
expiresوجود داشته باشد، باید عددی متناهی و بزرگتر از0باشد. - اگر
expiresنامعتبر باشد (NaN،0، منفی، نامتناهی، یا از نوع نادرست)، پروفایل باinvalid_expiresواجد شرایط نیست. - اگر
expiresدر گذشته باشد، پروفایل باexpiredواجد شرایط نیست. tokenRefاعتبارسنجیexpiresرا دور نمیزند.
قواعد حلوفصل
- معنای حلکننده برای
expiresبا معنای واجد شرایط بودن یکسان است. - برای پروفایلهای واجد شرایط، ماده توکن میتواند از مقدار درونخطی یا
tokenRefحلوفصل شود. - ارجاعهای غیرقابل حل در خروجی
models status --probeمقدارunresolved_refتولید میکنند.
قابلیت حمل کپی agent
ارثبری احراز هویت agent بهصورت read-through است. وقتی یک agent پروفایل محلی ندارد، میتواند در زمان اجرا پروفایلها را از محل ذخیره agent پیشفرض/اصلی حلوفصل کند، بدون اینکه ماده محرمانه را در auth-profiles.json خودش کپی کند.
جریانهای کپی صریح، مانند openclaw agents add، از این سیاست قابلیت حمل استفاده میکنند:
- پروفایلهای
api_keyقابل حمل هستند، مگر اینکهcopyToAgents: falseباشد. - پروفایلهای
tokenقابل حمل هستند، مگر اینکهcopyToAgents: falseباشد. - پروفایلهای
oauthبهصورت پیشفرض قابل حمل نیستند، چون توکنهای refresh میتوانند یکبارمصرف یا حساس به چرخش باشند. - جریانهای OAuth متعلق به provider فقط زمانی میتوانند با
copyToAgents: trueopt in کنند که ایمن بودن کپی کردن ماده refresh بین agentها مشخص باشد.
پروفایلهای غیرقابل حمل همچنان از طریق ارثبری read-through در دسترس میمانند، مگر اینکه agent مقصد جداگانه وارد شود و پروفایل محلی خودش را ایجاد کند.
فیلتر کردن ترتیب احراز هویت صریح
- وقتی
auth.order.<provider>یا بازنویسی ترتیب auth-store برای یک provider تنظیم شده باشد،models status --probeفقط شناسههای پروفایلی را probe میکند که در ترتیب احراز هویت حلوفصلشده برای آن provider باقی ماندهاند. - پروفایل ذخیرهشدهای برای آن provider که از ترتیب صریح حذف شده باشد، بعدا بیسروصدا امتحان نمیشود. خروجی probe آن را با
reasonCode: excluded_by_auth_orderو جزئیاتExcluded by auth.order for this provider.گزارش میکند.
حلوفصل هدف probe
- هدفهای probe میتوانند از پروفایلهای احراز هویت، اعتبارنامههای محیط، یا
models.jsonبیایند. - اگر یک provider اعتبارنامه داشته باشد اما OpenClaw نتواند نامزد مدل قابل probe برای آن را حلوفصل کند،
models status --probeمقدارstatus: no_modelرا باreasonCode: no_modelگزارش میکند.
کشف اعتبارنامه CLI خارجی
- اعتبارنامههای فقط زمان اجرا که متعلق به CLIهای خارجی هستند، فقط زمانی کشف میشوند که provider، runtime، یا پروفایل احراز هویت در دامنه عملیات جاری باشد، یا وقتی یک پروفایل محلی ذخیرهشده برای آن منبع خارجی از قبل وجود داشته باشد.
- فراخوانهای auth-store باید یک حالت کشف CLI خارجی صریح انتخاب کنند:
noneبرای احراز هویت پایدار/plugin فقط،existingبرای refresh کردن پروفایلهای CLI خارجی که از قبل ذخیره شدهاند، یاscopedبرای یک مجموعه مشخص از provider/profile. - مسیرهای فقطخواندنی/status مقدار
allowKeychainPrompt: falseرا ارسال میکنند؛ آنها فقط از اعتبارنامههای CLI خارجی مبتنی بر فایل استفاده میکنند و نتایج macOS Keychain را نمیخوانند یا دوباره استفاده نمیکنند.
محافظ سیاست OAuth SecretRef
- ورودی SecretRef فقط برای اعتبارنامههای ایستا است.
- اگر اعتبارنامه یک پروفایل
type: "oauth"باشد، شیءهای SecretRef برای ماده اعتبارنامه آن پروفایل پشتیبانی نمیشوند. - اگر
auth.profiles.<id>.modeبرابر با"oauth"باشد، ورودیkeyRef/tokenRefمبتنی بر SecretRef برای آن پروفایل رد میشود. - تخلفها در مسیرهای حلوفصل احراز هویت هنگام startup/reload خطاهای سخت هستند.
پیامرسانی سازگار با legacy
برای سازگاری script، خط اول خطاهای probe بدون تغییر میماند:
Auth profile credentials are missing or expired.
جزئیات خوانا برای انسان و کدهای دلیل پایدار ممکن است در خطوط بعدی افزوده شوند.