CodeShot
Authorization1 دقیقه مطالعه

Authorization چیست؟

فرآیند تعیین اینکه یک کاربر احراز هویت‌شده به چه منابع و عملیاتی مجاز به دسترسی است.

چرا مهم است؟

Authentication فقط می‌گوید کاربر کیست؛ Authorization تعیین می‌کند آن کاربر مجاز به چه کاری است — بدون آن، هر کاربر واردشده به همه‌چیز دسترسی دارد.

تعریف

Authorization یعنی «شما اجازه انجام چه کاری را دارید؟» — بعد از Authentication موفق، این لایه تصمیم می‌گیرد کاربر به یک Endpoint یا داده خاص دسترسی دارد یا نه.

مدل‌های رایج

  • RBAC (Role-Based): دسترسی بر اساس نقش کاربر (Admin، Editor، User).
  • Policy-Based: قواعد پیچیده‌تر، مثل «فقط مالک سفارش یا Admin اجازه مشاهده دارد».
  • Row-Level Authorization: بررسی مالکیت رکورد، نه فقط نقش کلی کاربر.

مثال (دات‌نت)

[Authorize(Roles = "Admin")]
[HttpDelete("orders/{id}")]
public async Task<IActionResult> DeleteOrder(int id) { ... }

// بررسی مالکیت (Row-Level) علاوه بر نقش:
if (order.CustomerId != currentUserId && !User.IsInRole("Admin"))
    return Forbid();

اشتباه رایج

❌ اکتفا به مخفی‌کردن دکمه/لینک در UI به‌عنوان کنترل دسترسی — این فقط UX است؛ کاربر می‌تواند مستقیم درخواست HTTP بزند، پس بررسی Authorization همیشه باید در سمت سرور (Backend) هم اجرا شود (نمونه کلاسیک OWASP A01: Broken Access Control).

منبع و مطالعه بیشتر

خلاصه

Authorization تعیین می‌کند کاربر احراز هویت‌شده مجاز به چه کاری است، از RBAC ساده تا بررسی مالکیت رکورد (Row-Level). کنترل دسترسی هرگز نباید فقط در UI باشد، همیشه در Backend هم بررسی شود. مرجع کامل: OWASP Authorization Cheat Sheet.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←