SSO OAuth2
پروتکل OAuth2
در این مقاله سعی داریم در مورد پروتکل OAuth2 و نحوه کارکرد آن توضیح دهیم.
معرفی
پروتکل OAuth2 یک فریمورک جهت احراز هویت و کنترل دسترسی برای برنامههای دیگر هست که بصورت تحت وب سرویس خودش را ارائه میکند. سایر برنامهها ورود کاربر و کنترل ورود آن را به این سرویس تفویض میکنند. این سرویس از یک جریان کلی (flow) جهت کنترل دسترسی استفاده میکند که میتواند برای برنامههای دسکتاپ، وب و موبایل استفاده شود.
این مقاله برای توسعهدهندگان نوشته شده است و یک توضیح کلی در مورد roles, authorization grant types, flow در اختیار شما قرار میدهد.
OAuth2 Roles
چهار role تعریف شده در OAuth:
- Resource Owner: کاربری است که به یک application مجوز دسترسی به حساب کاربری خودش را میدهد. و محدودیت این دسترسی بستگی به مجوزی دارد که کاربر میدهد.
- Client: همان application است که میخواهد به حساب کاربری، کاربر ذکر شده دسترسی داشته باشد. که ابتدا مجوز آن باید توسط کاربر صادر شود و همچنین توسط API تایید شود.
- Resource Server: میزبان حساب های کاربری محافظت شده.
- Authorization Server: هویت کاربر را تایید میکند و سپس token های دسترسی به application را صادر میکند.
از دید توسعه دهندگان application، یک سرویس API به تنهایی میتواند از پس کارهای Resource Server و Authorization Server بربیاید. در ادامه به هر دوی این roll های ترکیب شده، به عنوان role های API و Server اشاره خواهیم کرد.
Abstract Protocol Flow
با توجه به این که دید کلی نسبت به role های OAuth2 ایجاد شده است بیاید چگونگی تعامل آن ها با یکدیگر را در شکل زیر بررسی کنیم.
توضیحات دقیق تر طبق شماره گزاری شکل بالا:
- درخواست مجوز Application از کاربر برای دسترسی به منابع
- اگر درخواست مورد تایید User باشد، مجوز مورد نیاز را به Application ارسال میکند
- در این مرحله Application با احراز کردن هویت خود و ارائه مجوز، Access Token را از Authorization Server (API) درخواست میکند
- اگر احراز هویت Application و مجوز ارائه شده مورد تایید باشد Access Token توسط Authorization Server (API) به Application ارسال میشود
- Application با ارائه Access Token درخواست خود برای دسترسی به منابع را به Resource Server (API) ارسال میکند
- در صورت صحیح بودن Access Token منابع مورد نظر توسط سرویس Resource Server (API) در اختیار Application قرار میگیرد
جریان (flow) واقعی عملکرد این فرایند به نوع مجوز استفاده شده بستگی دارد اما این ایده کلی است. در ادامه انواع مختلف مجوز ها را مرور میکنیم.
Application Registration
قبل از این که Application شما از OAuth2 استفاده کند باید از طریق یک سرویس، Application خود را ثبت کنید. با پر کردن فرم ثبت نام در قسمت developer یا API سرویس وبسایت این ثبت نام انجام میشود. که در آن فرم اطلاعات Application شما را مطابق موارد زیر دریافت میکنند (اطلاعات دریافتی ممکن است جزئی تر از موارد زیر باشد).
- نام Application
- آدرس Application
- URL برگشتی (Redirect URI یا Callback URL)
URL برگشتی آدرسی است که بعد از تایید (یا عدم تایید) احراز هویت Application، کاربرتوسط سرویس به آن URL هدایت میشود.
{آدرس فرم ثبت نام}