Authentication و Authorization در ASP.NET Core
Authentication تشخیص میدهد کاربر کیست، Authorization تعیین میکند او مجاز به انجام چه کاری است.
چرا مهم است؟
این دو مفهوم اساس امنیت هر Web API هستند؛ اشتباه گرفتنشان یا ترتیب اشتباه ثبت Middleware میتواند کل امنیت برنامه را دور بزند.
Authentication (احراز هویت) — Who are you?
تشخیص هویت کاربر. بررسی میکند کاربر واقعاً همان کسی است که ادعا میکند.
رایجترین روشها: Cookie Authentication · JWT Bearer Authentication · OAuth 2.0 · OpenID Connect · Identity Server / Microsoft Entra ID
مثال: کاربر نامکاربری/رمز عبور وارد میکند → JWT صادر میشود → سیستم اعتبارسنجی میکند.
Authorization (مجوزدهی) — What can you do?
پس از Authentication تعیین میکند کاربر مجاز به انجام چه کاری است، بر اساس: Role · Claim · Policy · Requirement
مثال: فقط کاربر Admin بتواند حذف کند؛ مدیر مالی به گزارشها دسترسی داشته باشد.
تفاوت در یک نگاه
| Authentication | Authorization | |
|---|---|---|
| هدف | تشخیص هویت | تعیین سطح دسترسی |
| سؤال | Who are you? | What can you do? |
| ترتیب | قبل | بعد از Authentication |
| خروجی | Identity | Permission |
انواع Authorization در ASP.NET Core
Role-Based — دسترسی بر اساس نقش کاربر: [Authorize(Roles = "Admin")]
Claim-Based — دسترسی بر اساس Claim کاربر: [Authorize(Policy = "EmployeeOnly")]
Policy-Based (پیشنهادی) — ترکیب چند شرط در قالب Policy، قابلتوسعه و تست:
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
JWT Authentication
ساختار Token: Header · Payload (Claims) · Signature
مزایا: Stateless · مناسب API · سریع · Cross Platform
Cookie Authentication
مناسب برای MVC، Razor Pages و وبسایتهای سنتی؛ نگهداری Session کاربر در Cookie.
ترتیب صحیح Middleware
app.UseAuthentication();
app.UseAuthorization();
Authentication همیشه باید قبل از Authorization اجرا شود.
نکته کلیدی: Authentication یعنی تشخیص هویت، Authorization یعنی تعیین مجوز دسترسی؛ بدون Authentication، Authorization معنایی ندارد؛ Cookie برای وبسایتهای MVC و JWT برای REST API مناسبتر است.
خلاصه
- Authentication یعنی «کاربر کیست؟» و Authorization یعنی «کاربر چه کاری میتواند بکند؟».
- Role-Based، Claim-Based و Policy-Based سه روش رایج Authorization در ASP.NET Core هستند.
- ترتیب صحیح Middleware همیشه UseAuthentication سپس UseAuthorization است.
