OAuth ۲.۰ چیست؟
«نسخه کامل و جامع این مقاله به همراه بررسی الگوهای عملی، در مقاله OAuth 2.0 در سایت ImaniNova منتشر شده است. در ادامه بخشی از این مقاله را مطالعه می کنید:»
OAuth 2.0 یک استاندارد جهانی برای اعطای مجوز دسترسی (Authorization Framework) است که به یک برنامه اجازه می دهد بدون دریافت رمز عبور کاربر، به بخش مشخصی از اطلاعات یا سرویس های او دسترسی پیدا کند.
به زبان ساده، OAuth 2.0 مانند یک کارت دسترسی موقت عمل می کند.
فرض کنید شما در یک شرکت بزرگ کار می کنید. برای ورود به ساختمان، لازم نیست کلید تمام اتاق ها را داشته باشید. مدیر شرکت فقط کارتی در اختیار شما قرار می دهد که اجازه ورود به بخش هایی را دارد که برای انجام وظیفه تان لازم است.
اگر روزی دیگر در آن شرکت کار نکنید، کافی است همان کارت غیرفعال شود؛ نیازی نیست تمام قفل های ساختمان تعویض شوند.
OAuth نیز دقیقا همین ایده را در دنیای نرم افزار پیاده سازی می کند.
به جای اینکه کاربر رمز عبور اصلی خود را در اختیار هر برنامه ای قرار دهد، یک توکن دسترسی (Access Token) دریافت می کند که تنها مجوزهای مشخصی دارد.
این توکن ممکن است فقط اجازه خواندن اطلاعات پروفایل را داشته باشد و هیچ دسترسی ای به ایمیل، فایل ها یا تنظیمات حساب نداشته باشد.
به همین دلیل اگر توکن به سرقت برود، میزان خسارت بسیار کمتر از زمانی است که رمز عبور اصلی فاش شده باشد.
چرا OAuth 2.0 به وجود آمد؟برای درک اهمیت OAuth باید کمی به گذشته برگردیم.
سال ها پیش اگر یک توسعه دهنده قصد داشت برنامه ای بنویسد که به ایمیل کاربران دسترسی داشته باشد، تنها راه این بود که از کاربر نام کاربری و رمز عبور حساب ایمیلش را دریافت کند.
فرض کنید برنامه ای برای مدیریت ایمیل ها طراحی کرده اید.
کاربر مجبور بود چنین اطلاعاتی را وارد کند:
- آدرس ایمیل
- رمز عبور اصلی حساب
برنامه نیز این اطلاعات را ذخیره می کرد و هر زمان لازم بود، با همان رمز عبور به سرور ایمیل متصل می شد.
در نگاه اول شاید این روش ساده به نظر برسد، اما مشکلات امنیتی بسیار بزرگی داشت.
مشکل اول: افشای رمز عبور
اگر پایگاه داده برنامه هک می شد، مهاجم به رمز عبور اصلی کاربران دسترسی پیدا می کرد.
در بسیاری از موارد کاربران از یک رمز عبور برای چندین سرویس مختلف استفاده می کنند. بنابراین افشای رمز عبور فقط یک سرویس را تحت تاثیر قرار نمی داد؛ بلکه ممکن بود تمام حساب های کاربر در خطر قرار بگیرند.
مشکل دوم: دسترسی نامحدود
وقتی رمز عبور در اختیار برنامه قرار می گرفت، آن برنامه دقیقا همان سطح دسترسی ای را داشت که خود کاربر داشت.
یعنی اگر کاربر می توانست ایمیل حذف کند، برنامه هم می توانست.
اگر کاربر می توانست رمز عبور را تغییر دهد، برنامه نیز قادر به انجام آن بود.
هیچ محدودیتی وجود نداشت.
مشکل سوم: عدم امکان لغو دسترسی
فرض کنید دیگر نمی خواستید یک برنامه به حساب گوگل شما دسترسی داشته باشد.
در مدل قدیمی تنها راه این بود که رمز عبور حساب گوگل خود را تغییر دهید.
اما با تغییر رمز عبور، تمام دستگاه ها، موبایل ها، لپ تاپ ها و برنامه های دیگر نیز از حساب خارج می شدند و باید دوباره وارد می شدید.
این کار هم زمان بر بود و هم تجربه کاربری بسیار بدی ایجاد می کرد.
مشکل چهارم: اعتماد کامل به برنامه های شخص ثالث
در گذشته کاربران مجبور بودند کاملا به توسعه دهندگان اعتماد کنند.
اگر توسعه دهنده تصمیم می گرفت رمز عبور را ذخیره کند، نسخه پشتیبان بگیرد یا حتی آن را در اختیار شخص دیگری قرار دهد، کاربر هیچ کنترلی روی این موضوع نداشت.
امروزه چنین روشی از دیدگاه امنیت سایبری کاملا غیرقابل قبول محسوب می شود.
تمام این مشکلات باعث شد شرکت هایی مانند گوگل، توییتر و سایر ارائه دهندگان سرویس به دنبال استانداردی باشند که بدون افشای رمز عبور، امکان دسترسی کنترل شده را فراهم کند.
نتیجه این تلاش ها استانداردی بود که امروزه با نام OAuth 2.0 شناخته می شود.
این استاندارد نه تنها امنیت کاربران را به شکل چشمگیری افزایش داد، بلکه تجربه کاربری را نیز بسیار ساده تر کرد.
امروزه تنها با چند کلیک می توانید به یک وب سایت اجازه دهید اطلاعات پروفایل شما را بخواند، بدون اینکه حتی یک لحظه رمز عبورتان از سرور گوگل خارج شود.
ادامه مقاله در
https://imaninova.ir/ArticleView/oauth-2-guide-security-architecture