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.
