در حوزه امنیت سایبری و طراحی سیستم‌های آنلاین، دو واژه‌ی بسیار رایج دیده می‌شود: Authentication vs Authorization.
این دو واژه ممکنه در نگاه اول شبیه هم به نظر برسند، چون هر دو با ورود کاربر و دسترسی به منابع سروکار دارند؛ اما در واقع که هر کدام از آن‌ها بخشی از یک زنجیره‌ی امنیتی جدایی‌ناپذیر هستند.

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

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

Authentication چیست؟

what is authentication?
Authentication چیست

در ساده‌ترین تعریف، Authentication همان احراز هویت است، به این معنی که سیستم می‌پرسد:
آیا واقعاً تو کسی هستی که می‌گویی هستی؟ یا به قولی :” آنچه می نمایی هستی؟”

فرآیند Authentication زمانی رخ می‌دهد که کاربر می‌خواهد وارد یک سیستم شود، مثلاً در سایت ثبت نام کند یا با نام کاربری و رمز عبور وارد حسابش شود. سیستم باید بداند که واقعاً این شخص همان شخص است نه فردی که قصد جعل هویت را دارد.

چگونه Authentication انجام می‌شود؟

Authentication بر اساس اطلاعاتی انجام می‌شود که کاربر ارائه می‌دهد و سیستم آن را بررسی می‌کند. این اطلاعات می‌تواند شامل موارد زیر باشد:

1. نام کاربری + رمز عبور

همان چیزی که اکثر ما در همه جا استفاده می‌کنیم: مثل ورود به سایت، اپلیکیشن‌ها و حساب‌های ایمیل.

 

2. Authentication چند مرحله‌ای (MFA / 2FA)

در این روش برای ورود، کاربر باید چند سطح احراز هویت را طی کند؛ مثلاً رمز عبور + کد یک‌بار مصرف یا حتی استفاده از اثر انگشت.

 

3. بیومتریک (biometric authentication) (اثر انگشت، چهره و…)

سیستم از خصوصیات منحصر به فرد بدن شما استفاده می‌کند تا هویت شما را تایید کند (مثل باز کردن موبایل با اثر انگشت).

 

4. توکن‌ها (Tokens) و کدهای یک‌بار مصرف

در برخی APIها و اپ‌ها، سیستم برای Authentication از توکن‌هایی استفاده می‌کند که فقط یکبار معتبر هستند — این روش برای امنیت بیشتر طراحی شده است.

the Authentication Processes
The Authentication Processes

شاید بپرسید “آیا Authentication فقط ورود به سیستم است؟”

هم بله و هم نه!
وقتی شما در یک سایت وارد می‌شوید، Authentication نشان می‌دهد که شما، واقعاً همان شخصی هستید که ادعا می‌کنید.
اما Authentication به‌تنهایی مشخص نمی‌کند شما چه کاری می‌توانید انجام دهید پس هنوز بخشی از مسیر بزرگ‌تر باقی مانده است: Authorization.

Authorization چیست؟

what is authorization

حالا که سیستم می‌داند شما واقعاً همان کسی هستید که ادعا می‌کنید، سوال بعدی سیستم این است که:
تو چه چیزهایی را می‌توانی ببینی یا انجام دهی؟
پاسخ همان Authorization می‌دهد، سطح دسترسی کاربر.

فرض کنید وارد حساب کاربریتان در یک سایت فروشگاهی شده‌اید. Authentication شما را وارد می‌کند، ولی Authorization تصمیم می‌گیرد که آیا شما می‌توانید:

✔ سفارشات قبلی خود را ببینید
✔ پروفایل تان را ویرایش کنید
✔ به بخش مدیریت دسترسی داشته باشید یا نه. یا ورود به بخش های خاص داشبورد.
✔ محصولی را حذف یا اضافه کنید

و….

Authentication vs Authorization چه تفاوتی دارند؟

Authorization vs Authentication

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

بیایید این تفاوت را با یک مثال واقعی بیان کنیم:

بانک مجازی (آنلاین):
فرض کنید وارد حساب بانک آنلاین خود می‌شوید:

در فرآیند Authentication  سیستم از شما رمز عبور و کد پیامکی می‌خواهد تا مطمئن شود شما صاحب حساب هستید.

در فرآیند Authorization بعد از ورود، سیستم مشخص می‌کند که شما فقط می‌توانید موجودی حساب را ببینید و پرداخت انجام دهید، ولی نمی‌توانید تنظیمات مدیریت مشتریان را تغییر دهید چون سطح دسترسی این را ندارد.

مثل این می ماند که Authentication در ورود به ساختمان است یا همان نگهبان در ورودی، اما Authorization تعیین می‌کند در کدام اتاق‌ها می‌توانی بروید.

چرا Authentication و Authorization هر دو مهم‌اند؟

وقتی شما فقط Authentication داشته باشید اما Authorization نداشته باشید:

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

و وقتی Authorization داشته باشید اما Authentication نه:

هیچ‌کس نمی‌داند چه کسی وارد سیستم شده، البته که تخصیص دسترسی (Authorization ) با این اوصاف بی‌معنی می‌شود.

پس امنیت کامل زمانی شکل می‌گیرد که این دو با هم کار کنند.

اهمیت Authentication و Authorization
اهمیت Authentication و Authorization

کاربرد Authentication و Authorization در برنامه‌نویسی و APIها

در توسعه‌ی برنامه‌ها و APIها، Authentication و Authorization جزو بخش‌های جدایی‌ناپذیر طراحی سیستم هستند. اگر قصد دارید پروژه‌ای امن بسازید، باید فرایندهای زیر را در نظر بگیرید:

۱. Token-Based Authentication

این روش در اپ‌هایی مثل موبایل یا APIها بسیار رایج است. سیستم بعد از احراز هویت، توکنی به کاربر می‌دهد و از این توکن برای درخواست‌های بعدی استفاده می‌شود.

۲. OAuth و OpenID

در برنامه‌های مدرن می‌توانید از استانداردهایی مثل OAuth 2.0 برای Authorization و OpenID Connect برای Authentication استفاده کنید.

۳. Role-Based Access Control (RBAC)

این نوع Authorization بر اساس نقش‌هایی مثل مدیر، کاربر عادی، مهمان و… پیاده‌سازی می‌شود تا هر نقش فقط بخش‌هایی را ببیند و اجرا کند که باید.

تفاوت‌های تکنیکال و کاربردی در عملکرد

برای اینکه بهتر تفاوت‌ها را بفهمید، اینجا آن‌ها را به صورت مرحله‌به‌مرحله مقایسه می‌کنیم:

زمان اجرا:

Authentication هنگام ورود به سیستم اجرا می‌شود.

Authorization بعد از Authentication و زمانی رخ می‌دهد که کاربر قصد انجام عمل یا دسترسی به منبع دارد.

وابستگی:

Authorization همیشه نیاز دارد که کاربر اول Authentication شده باشد.

اما Authentication می‌تواند مستقل از Authorization رخ دهد (مثلاً وقتی فقط ورود لازم است).

هدف:

هدف Authentication نشان دادن و برسی هویت فرد است.(البته با توجه به اطلاهاتی که از آن فرد ثبت است)

هدف Authorization نشان دادن سطح دسترسی مجاز کاربر است.

به طور مثال در APIها به اینصورت است:

در Authentication: ارسال JWT یا API Key برای تایید هویت.

در Authorization: بررسی اینکه آیا کاربر می‌تواند رکورد خاصی را بخواند یا حذف کند.

و خطرات ناشی از بی‌توجهی به هر کدام

اگر در پروژه‌تان Authentication ضعیف باشد، ممکن است خطراتی مانند موارد زیر را تجربه کنید:

1 . دسترسی غیرمجاز به حساب‌ها
2. سرقت اطلاعات
3. جل هویت
4. نفوذ به داده‌های حساس

اگر Authorization ضعیف باشد، ممکن است:

  1. کاربران به بخش‌های مدیریتی دسترسی پیدا کنند
  2. داده‌های مربوط به دیگر کاربران لو برود
  3. حملات افراطی روی منابع انجام شود

بهترین شیوه‌ها برای پیاده‌سازی امن چیست ؟

برای امنیت کامل در سیستم‌تان همیشه این موارد را رعایت کنید:

– از احراز هویت چند مرحله‌ای (MFA) استفاده کنید.

– رمزهای عبور را هَش و ایمن ذخیره کنید تا لو نروند.
– دسترسی‌های کمینه لازم (least privilege) تعریف کنید تا هر کاربر فقط به چیزهایی دسترسی داشته باشد که نیاز دارد.

– از پروتکل‌های استاندارد مثل OAuth و OIDC استفاده کنید تا خطای انسانی کمتر شود.

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

سرانجام

ممکن هست که Authentication و Authorization با هم اشتباه گرفته شوند، پس اگر بخواهیم به زبان ساده بگوییم:

Authentication می‌گوید: تو واقعاً کی هستی؟
Authorization می‌گوید: بعد از اینکه ثابت شدی کی هستی، چه چیزهایی را می‌توانی انجام دهی؟ یا به چه چیز هایی دسترسی داری.

هر دو برای امنیت، تجربه کاربری بهتر و کنترل دقیق بر دسترسی‌ها حیاتی هستند. بدون Authentication نمی‌توانیم مطمئن باشیم کاربران واقعی هستند و بدون Authorization نمی‌توانیم به آن‌ها بگوییم چه کارهایی را مجازند انجام دهند. این دو فرایند مانند دو لایه‌ی حفاظتی عمل می‌کنند که باید به‌خوبی پیاده‌سازی شوند تا امنیت اطلاعات شما در برابر تهدیدات سایبری حفظ شود.

اگر قصد توسعه وب‌اپلیکیشن یا API امن دارید، تیم CodeStorePro می‌تواند در طراحی Authentication، Authorization و امنیت سیستم به شما کمک کند.