احراز هویت | Layatanahi
dr

Api

احراز هویت#

هر درخواست API v2 و MCP با یک توکن حامل Sanctum احراز هویت می‌شود که به یک اعتبارنامه یکپارچه‌سازی تجارت تعلق دارد. توکن، اعتبارنامه را مشخص می‌کند؛ اعتبارنامه، تجارت و کارمند را مشخص می‌کند؛ و نقش‌های زندهٔ کارمند تعیین می‌کند که درخواست چه چیزی را می‌تواند بخواند. بنابراین احراز هویت دو بررسی در یکی است: یک توکن معتبر، و یک بافت اجازه‌دهی که هنوز معتبر است.

ارسال توکن#

http
GET /api/v2/context HTTP/1.1
Host: app.example.com
Authorization: Bearer 12|secret-token-value
Accept: application/json

قاعده‌ها:

  • توکن را با طرح Bearer در هدر Authorization بفرستید.
  • همیشه Accept: application/json را بفرستید؛ بدون آن، خطاهای فریم‌ورک به‌صورت HTML نمایش داده می‌شوند.
  • توکن هنگام ایجاد یا چرخش اعتبارنامه یک بار نشان داده می‌شود. آن را در یک مدیر راز نگه دارید.
  • توکن‌ها با زمان‌سنج منقضی نمی‌شوند، اما به‌محض بازپس‌گرفتن اعتبارنامه یا از دست دادن اختییار لازم توسط کارمندِ مالک، از کار می‌افتند.

سرور چه چیزی را بررسی می‌کند#

برای هر درخواست، به این ترتیب:

گامبررسیکد خطا
1توکن Sanctumی وجود دارد که شناسه یکپارچه‌سازی را حمل می‌کندintegration_credential_required (401)
2اعتبارنامه active است و به کاربرِ توکن تعلق داردintegration_credential_invalid (401)
3تجارت وجود دارد، حذف نشده و active استintegration_credential_invalid (401)
4کاربر هنوز عضویت کارمندی فعال در تجارت داردintegration_membership_inactive (403)
5کارمند مدیر تجارت است یا دست‌کم یک شعبه را مدیریت می‌کندintegration_role_revoked (403)
6اعتبارنامه غیرسطح‌کل‌تجارت هنوز شعبه‌ای در دامنه داردintegration_branch_scope_empty (403)
7صلاحیت اعطا شده، و نقش زنده اجازه نگاشت‌شده را هم می‌دهدapi_ability_denied (403)
8شعبه درخواستی داخل دامنه اعتبارنامه استbranch_scope_denied (403) یا branch_required (422)

گام‌های 4 تا 6 پیش از هر دسترسی به داده اجرا می‌شوند. اگر کارمند ترحیل شده، از مدیریت بیرون رفته، یا نقش مربوطش حذف شده باشد، اعتبارنامه شکست می‌خورد حتی اگر رشته توکن هنوز معتبر باشد.

اختییار زنده#

اختییار در هر درخواست از نقش‌های کارمند گرفته می‌شود:

اختییاربا چه شناسایی می‌شود
مدیر تجارتنقشی در دامنه تجارت که settings.write را دربر دارد
مدیر شعبهشعبه‌ای که کارمند مدیر آن است، یا شعبه خانگی وقتی نقش Management در دامنه شعبه دارد
بدون اختییارهیچ‌یک از موارد بالا، بنابراین integration_role_revoked برگردانده می‌شود

دامنه مدیر تجارت همه شعبه‌های فعال تجارت است. دامنه مدیر شعبه مجموعه شعبه‌هایی است که او مدیریت می‌کند. اعتبارنامه‌ای که به شعبه‌های انتخاب‌شده محدود شده، به تقاطع شعبه‌های تحت مدیریت کارمند و شعبه‌های برگزیدهٔ اعتبارنامه تنگ می‌شود.

نگاشت صلاحیت و اجازه#

یک صلاحیت روی اعتبارنامه اعطا می‌شود، اما تنها زمانی کار می‌کند که نقش زندهٔ کارمند اجازه صفحه مطابق را هم بدهد:

صلاحیتاجازه صفحه موردنیاز
products:readinventory.products.read
stock:readinventory.branches.read
purchases:readpurchase.purchases.read
orders:readsale.orders.read
sales:readsale.sales.read

سطح‌های تشدید اختییار عامدانه مستثنا هستند: هیچ صلاحیتی به access.*، مدیریت کارمندان، تغییرات گذرواژه یا تنظیمات تأیید دومرحله‌ای نگاشت نمی‌شود.

تعیین شعبه#

شعبه هدف، به این ترتیب از:

  1. هدر X-Business-Branch.
  2. آرگومان branch_id یک فراخوانی ابزار MCP.
  3. پارامتر درخواست branch_id.

آنگاه:

  • اگر شعبه‌ای فرستاده شود، باید متعلق به تجارت و داخل دامنه اعتبارنامه باشد؛ وگرنه branch_scope_denied.
  • اگر شعبه‌ای فرستاده نشود و اعتبارنامه در سطح کل تجارت باشد، درخواست در سطح تجارت می‌خواند.
  • اگر شعبه‌ای فرستاده نشود و دقیقاً یک شعبه در دامنه باشد، همان شعبه استفاده می‌شود.
  • اگر شعبه‌ای فرستاده نشود و چند شعبه در دامنه باشد، API با branch_required پاسخ می‌دهد.

جداسازی توکن#

توکن‌های یکپارچه‌سازی فقط روی /api/v2/* و /mcp/* پذیرفته می‌شوند. استفاده از آن‌ها روی یک مسیر محافظت‌شده با Sanctum، مانند پشت‌دفتر پشتیبانی، این را برمی‌گرداند:

json
{
  "error": {
    "code": "integration_token_not_allowed",
    "message": "Business integration credentials are restricted to API v2 and MCP endpoints."
  }
}

پاسخ‌های شکست#

وضعیتکدمعنا
401integration_credential_requiredتوکنی نیست، یا توکن یک توکن یکپارچه‌سازی نیست
401integration_credential_invalidاعتبارنامه بازپس‌گرفته، تجارت غیرفعال، یا عدم تطابق کاربر
403integration_membership_inactiveعضویت کارمند حذف شده است
403integration_role_revokedکارمند دیگر اختییار سرپرستی یا مدیریت ندارد
403integration_branch_scope_emptyاعتبارنامه شعبه‌محدود دیگر هیچ شعبه‌ای در دامنه ندارد
403api_ability_deniedصلاحیت موجود نیست، یا نقش دیگر اجازه را نمی‌دهد
403branch_scope_deniedشعبه بیرون از دامنه اعتبارنامه است
422branch_requiredچند شعبه در دامنه است و هیچ‌کدام نام برده نشده
403integration_token_not_allowedتوکن روی یک مسیر غیریکپارچه‌سازی استفاده شده

راهنمای عملیاتی#

  • در یک برنامه زمانی منظم و فوراً پس از هرگونه مظنون به نشت، چرخش کنید.
  • برای هر یکپارچه‌سازی یک اعتبارنامه نگه دارید و آن را به نام سیستم استفاده‌کننده نام‌گذاری کنید.
  • کمترین مجموعه صلاحیت و کمترین مجموعه شعبه را اعطا کنید.
  • last_used_at و رویدادهای درخواست را در کارت مصرف پایش کنید.
  • توکن را در کد سمت کلاینت جاسازی نکنید؛ یکپارچه‌سازی‌ها سرور‌به‌سرور هستند.

صفحات مرتبط#