OAuth2 چیست؟
پروتکل استاندارد Delegated Authorization که به یک اپلیکیشن اجازه میدهد بدون دیدن رمز عبور کاربر، از طرف او به منابع محدودی در یک سرویس دیگر دسترسی پیدا کند.
چرا مهم است؟
«ورود با گوگل/گیتهاب» و اتصال یک اپ به API یک سرویس دیگر (مثل تقویم) همگی روی OAuth2 ساخته شدهاند؛ فهم جریان آن پیشنیاز پیادهسازی درست هر یک از این سناریوهاست.
تعریف
OAuth2 پروتکلی برای Authorization (نه Authentication بهتنهایی) است: کاربر به یک اپلیکیشن اجازه میدهد بدون افشای رمز عبورش، به بخشی از دادهاش در یک سرویس دیگر (مثل گوگل) دسترسی محدود داشته باشد.
نقشهای اصلی
- Resource Owner: کاربر نهایی.
- Client: اپلیکیشنی که درخواست دسترسی میدهد.
- Authorization Server: جایی که کاربر وارد و اجازه میدهد (مثل صفحه ورود گوگل).
- Resource Server: APIای که داده واقعی را نگه میدارد.
جریان رایج: Authorization Code Flow
- کاربر روی «ورود با گوگل» کلیک میکند → به صفحه ورود گوگل هدایت میشود.
- بعد از تأیید، گوگل یک Authorization Code به اپلیکیشن برمیگرداند.
- اپلیکیشن (سمت سرور) این Code را با کلید مخفی خودش به Access Token تبدیل میکند.
- اپلیکیشن با Access Token به Resource Server درخواست میزند.
اشتباه رایج
❌ اشتباهگرفتن OAuth2 با Authentication ساده — OAuth2 اصالتاً برای «اجازه دسترسی» طراحی شده؛ برای تأیید هویت کاربر روی آن، لایه OpenID Connect لازم است.
منبع و مطالعه بیشتر
خلاصه
OAuth2 به یک اپلیکیشن اجازه میدهد بدون دیدن رمز عبور کاربر، با Access Token به منابع محدودی از طرف او دسترسی پیدا کند، معمولاً از طریق Authorization Code Flow. OAuth2 بهتنهایی برای احراز هویت طراحی نشده، آن نقش OpenID Connect است. مرجع کامل: OAuth 2.0 Simplified در oauth.com.
