احتمالاً تاکنون OAuth 2.0 به گوشتان خورده است یا حتی اگر دورههای آموزش PHP، آموزش لاراول و… را در کوئرا کالج گذرانده باشید، با OAuth 2.0 روبهرو شدهاید. در ادامه قصد داریم OAuth 2.0 را به زبان ساده بررسی کنیم.
کلمه OAuth مخفف Open Authorization و بهطور کلی پروتکلی است که یک وبسرویس را قادر میسازد تا از کاربر برای انجام کاری از طرف او، کسب اجازه کند. بهعنوان مثال در صفحه لاگین کوئرا شما قادر هستید از Google / GitHub / LinkedIn برای ورود به سایت استفاده کنید و از شما اجازهٔ استفاده از اطلاعاتتان در سایتهای ذکرشده گرفته میشود.
پروتکل OAuth دارای دو نسخه OAuth 1.0 (عرضهشده در سال ۲۰۰۷) و OAuth 2.0 (عرضهشده در سال ۲۰۱۲) است که هرکدام ویژگیهای منحصربهفرد خودشان را دارند و نیازهایی را برطرف میکنند که در ادامه بهطور ویژه به OAuth 2.0 خواهیم پرداخت.
اعضای پروتکل OAuth 2.0
در پروتکل OAuth 2.0 چهار عضو زیر وجود دارند:
- Client: برنامهای که قصد استفاده از اطلاعات کاربر را دارد.
- Resource Server: سرور منابع است و تمام اطلاعات مربوط به کاربر را نگهداری میکند؛ مانند گوگل که اطلاعاتی مانند نام، عکس پروفایل و… را نگهداری میکند.
- Resource Owner: مالک منابع مانند اکانت کاربر در گوگل.
- Authorization Server: سرور احراز هویت است که بعد از تأیید Resource Owner، توکنی (Access Token) را برای کلاینت صادر میکند.
نحوه ارتباط این اعضا با یکدیگر در این پروتکل بهصورت شکل زیر است:
اعطای مجوز
همانطور که ذکر شد، هدف از OAuth 2.0 گرفتن مجوز برای دسترسی به منابع حفاظتشدهٔ کاربر است، این اعطای مجوز بهصورتهای مختلفی انجام میشود که ۴ نوع مهم آن عبارتاست از:
- Client Credential
- Authorization Code
- Resource Owner Password Credential
- Implicit
Client Credential
در این نوع اعطای مجوز، Client و Resource Owner یکی هستند، بهاینصورت که Resource Owner مستقیماً به Authorization Server ریکوئست میزند و سپس به تعامل با Resource Server میپردازد:
Authorization Code
از رایجترین اعطای مجوزهاست و به این صورت است که بعد از ارسال درخواست مجوز از سوی Client و کسب اجازه از Resource Owner، فرایند دریافت Access Token آغاز میشود، شکل کلی این روش بهصورت زیر است:
Resource Owner Password Credential
در این نوع اعطای مجوز، کاربر اطلاعات نام کاربری و رمز عبور خود را مستقیماً در برنامه وارد میکند و برنامه از این طریق یک توکن دسترسی دریافت میکند.
Implicit
در این نوع اعطای مجوز، بعد از ارسال درخواست مجوز از سوی Client و کسب اجازه از Resource Owner، مستقیماً Access Token برگردانده میشود.
در این مقاله بهصورت کلی پروتکل OAuth 2.0 مورد بررسی قرار گرفت و انواع اعطای مجوز آن نیز بیان شد.