پروتکل OAuth یک پروتکل استاندارد تشخیص هویت میباشد که به صورت متن باز یا open source ارائه شده است. وقتی OAuth روی یک سرویس برای مثال سرویس Gmail فعال باشد، یک API ارائه میکند که برنامههای کاربردی دیگر میتوانند با آن، دادههای شما را با دسترسی محدود که این دسترسی توسط شما مشخص میشود، در اختیار داشته باشند.
این پروتکل دارای 2 نسخه اصلی OAuth 1.0 و OAuth 2.0 میباشد که در این دوره و در بخش قبل به بررسی برخی از ویژگیها و تفاوتهای آنها اشاره کردیم اما از آن جایی که هدف این مستند بررسی OAuth 2.0 بوده است پس عملکرد نسخه ی دوم را تشریح کردیم. تعدادی روش برای OAuth معرفی شد که برخی از آنها مانند Implicit و Password Grant به دلیل مشکلات امنیتی، از سمت خود OAuth توصیه نشده است.
با توجه به مستندات پروتکل OAuth 2.0 و همچنین مطالبی که در بخشهای قبل گفته شد، روش پیشنهاد شده Authorization Code Grant میباشد که جهت بالا بردن موارد امنیتی، استفاده از افزونه ی PKCE همراه با آن توصیه شده است.
همانطور که قبلا ذکر شد روند Authorization Code بهترین استفاده در برنامههای وب و موبایل را دارد. از آنجا که Grant یا اعطای Authorization code مرحله اضافی قبل از گرفتن Access Token است، یک لایه امنیتی اضافی را ارائه میدهد که در Implicit Grant وجود ندارد.
اگر از روند Authorization code در یک برنامه تلفن همراه یا هر نوع برنامه دیگری که نمیتواند client secret را مخفی نگه دارد، استفاده میکنید، باید از افزونه PKCE استفاده کنید، که در برابر حملات دیگر محافظت میکند. مرحله تعویض کد، تضمین میکند که یک مهاجم قادر به رهگیری Access Token نیست، زیرا همیشه Access Token از طریق یک کانال امن بین برنامه و سرور OAuth ارسال میشود.
پیشنهادات
در طی انجام تحقیقات بر روی پروتکل OAuth تعدادی نکته وجود داشته که لازم میدانیم در بخش جمعبندی، به عنوان نکات پیشنهادی بیان کنیم.
· اگر قصد مطالعه و یادگیری این مبحث را دارید، صرفا به مطالعه و استفاده از یک منبع بسنده نکنید. در مستندات اصلی OAuth نیز، علاوه بر مطالبی که نوشته شده، منابع دیگری را معرفی کرده است که لازم است روی آنها نیز مطالعه داشته باشید. پس پیشنهاد میکنیم علاوه بر این گذراندن این دوره، خودتان به جستجوی منابع دیگر بپردازید.
· دقت کنید هر پروتکل ممکن است مشکلات امنیتی داشته باشد و یا در جهت رفع مشکلات امنیتی، روشهای تازه ای را در اختیار کاربران قرار دهد، پس حتما به روز باشید و مقالات امنیتی که در سایت OAuth معرفی شدهاند را بررسی نمایید.
· در این مستند به بررسی روندهای OAuth 2.0 پرداخته شد و حالت نرمال آنها را بدون این که به خطایی بخورد، ذکر کردیم. لازم است بدانیم که ممکن است هر کدام از درخواستهایی که در روندها نوشته شد، با یک خطا به عنوان پاسخ مواجه شود. به جهت طولانی نشدن مطلب و همچنین خارج نشدن از مبحث اصلی، از ذکر آنها در این دوره اجتناب شد. حتما این موارد را نیز موقع استفاده بررسی کنید.
در ادامه ی این دوره به بررسی یکی از قابلیتهای خوب لاراول که از OAuth2.0 استفاده کرده است میپردازیم که Laravel Passport نام دارد. آن را معرفی میکنیم و با استفاده از یک پروژه ی کاربردی، مراحل و انواع مجوز ها را با آن توضیح میدهیم.
با ما همراه باشید
منابع
1. https://www.oauth.com
3. https://developer.okta.com/blog/2018/04/10/oauth-authorization-code-grant-type
4. https://en.wikipedia.org/wiki/OAuth
5. https://www.synopsys.com/blogs/software-security/oauth-2-0-vs-oauth-1-0/
7. https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2