پروتکل OAuth چیست؟

پروتکل OAuth یک استاندارد فنی برای مجوز دادن به کاربران است. در واقع OAuth پروتکلی برای انتقال مجوز از یک سرویس به سرویسی دیگر بدون به اشتراک گذاشتن اعتبار واقعی کاربر مانند نام کاربری و رمز عبور است. با استفاده از پروتکل OAuth یک کاربر می تواند وارد یک پلتفرم شده و سپس مجاز به انجام اقدامات و مشاهده داده ها در پلتفرمی دیگر باشد.

OAuth انتقال مجوز از برنامه ای به برنامه دیگر را صرف نظر از اینکه چه برنامه ای هستند ممکن می کند. OAuth یکی از رایج ترین روش هایی است که برای انتقال مجوز از یک سرویس احراز هویت یکپارچه (SSO) به یک سامانه دیگر استفاده می شود. پروتکل های دیگر نیز می توانند این کار را انجام دهند اگرچه پروتکل OAuth یک از پرکاربردترین آنها است.

تصور کنید هنگامی که صاحب خانه در خانه نیست بازدید کننده ای به خانه می آید و مالک به جای ارسال کلید برای بازدید کننده کدی موقتی می فرستد تا وارد صندوقی شود که کلید داخل آن است. OAuth نیز به روشی مشابه کار می کند. در OAuth یک سامانه به سامانه دیگر ، به جای ارسال اعتبارنامه کاربر برای اجازه دسترسی به وی، یک توکن دسترسی (authorization token) ارسال می کند.

توکن دسترسی OAuth چگونه کار می کند؟

فرض کنید شخصی می خواهد به برنامه ذخیره فایل ابری سازمان خود دسترسی پیدا کند. فرد قبلا وارد SSO سازمان شده است اما هنوز در آن روز به برنامه ذخیره فایل دسترسی پیدا نکرده است.هنگامی که برنامه ذخیره فایل را باز می کند به جای اینکه به راحتی اجازه ورود به او داده شود، درخواست مجوز برای او ازSSO گرفته می شود.

در پاسخ ، SSO توکن دسترسی OAuth را به برنامه ارسال می کند. این توکن شامل اطلاعاتی در مورد حق امتیازات وی در برنامه است. همچنین این توکن محدودیت زمانی خواهد داشت. بعد از مدت زمان مشخصی توکن منقضی شده و باید مجددا وارد SSO شود.توکن های OAuth معمولا با استفاده از HTTPS ارسال می شوند به این معنی که رمزگذاری شده اند. آن ها در لایه 7 از مدل OSI مورد استفاده قرار می گیرند.

OAuth به چه منظوری استفاده می شود؟

OAuth هم برای اجازه دادن به کاربران و هم برای اجازه دسترسی جزئی سامانه ای به سامانه دیگر مورد استفاده قرار می گیرد. یکی از مواردی که کاربران با آن مواجه می شوند، اجازه دسترسی یک سامانه به یک پلتفرم شبکه اجتماعی یا یک حساب آنلاین دیگر است. حساب های کاربری گوگل می توانند با بسیاری از برنامه های مصرف کننده مختلف مانند پلتفرم های وبلاگ نویسی، وب سایت های خبری و بازی های آنلاین مختلف ادغام شوند. در این موارد از پروتکل OAuth در پشت صحنه استفاده می شود تا این برنامه های خارجی بتوانند به داده های لازم از گوگل دسترسی پیدا کنند.

برای کسب و کارها، رایج ترین استفاده از OAuth در ارتباط با سامانه های مدیریت هویت و دسترسی (IAM) است. ممکن است کاربران از طریق OAuth مجاز به استفاده از سامانه باشند. به عنوان مثال یک کارمند می تواند از طریق نام کاربری و رمز عبور خود به سامانه SSO سازمان وارد شود. این سامانه SSO به آن ها امکان دسترسی به همه برنامه های مورد نیاز برای انجام کارهای خود را می دهد. سامانه SSO این کار را با انتقال توکن های دسترسی OAuth به این برنامه ها انجام می دهد.

OAuth یکی از چندین پروتکل کنترل دسترسی است که امروزه مورد استفاده قرار می گیرد. استفاده از این پروتکل های کنترل دسترسی ضروری است زیرا باید راهی برای ارسال اطلاعات کنترل دسترسی بین برنامه های کاربردی بدون افشای اطلاعات ورود کاربر وجود داشته باشد. برخی از پلتفرم ها نیز متدهای کنترل دسترسی خود را توسعه داده اند. برای مثال فیس بوک Facebook Connect را ارائه می دهد.

پروتکل OAuth

(OAuth 2.0) چیست؟

(OAuth 2.0) آخرین نسخه OAuth است. اولین نسخه OAuth در سال 2010 منتشر شد. در سال 2012 ، OAuth 2.0 منتشر شد و برخی از آسیب پذیری های موجود در OAuth 1.0 را برطرف کرد.

مقایسه OAuth و OAuth 2.0

OAuth 1.0 OAuth 2.0
OAuth 1.0 از الزامات رمزنگاری پیچیده ای استفاده کرده است. اجرای OAuth 2.0 سریعتر و آسان تر است.
نیاز به رمزگذاری توکن OAuth در نقاط انتهایی دارد. توکن های OAuth درنسخه 2.0 دیگر نیازی به رمزگذاری در نقاط انتهایی ندارند زیرا در لایه انتقال رمزگذاری می شوند.
OAuth 1.0 فقط از سه جریان پشتیبانی کرده و دیگر توسعه نیافته است. از طرف دیگر ، OAuth 2.0 دارای شش جریان برای انواع مختلف برنامه ها و نیازها است و امکان امضای رمزها را بر روی HTTPS فراهم می کند.

SAML در مقابل OAuth : تفاوت احراز هویت با کنترل دسترسی چیست؟

احراز هویت و کنترل دسترسی اگرچه مشابه به نظر می رسند اما در مبحث مدیریت دسترسی کاملا یکسان نیستند و درک تفاوت بین آن ها برای درک نحوه عملکرد فناوری مدیریت دسترسی (از جمله OAuth) بسیار حائز اهمیت است. احراز هویت به هویت کاربر مربوط می شود در حالی که کنترل دسترسی مربوط به امتیازات کاربر است.

تصور کنید شخصی در یک تاسیسات امن که یک نگهبان در ورودی دارد کار می کند. تمام وسایل نقلیه ای که قصد ورود به تاسیسات دارند در محل نگهبانی متوقف شده و فقط کارمندان شناخته شده مجاز به ورود هستند. نگهبانی جایی است که احراز هویت افراد انجام می شود. ماموران امنیتی کارت شخص را در برابر لیستی از کارمندان و پلاک وسیله نقلیه وی را در لیست خودروهای مجاز بررسی می کنند.اگر آن ها بتوانند او و وسیله نقلیه اش را احراز هویت کنند می تواند در پارکینگ تاسیسات رفت و آمد یا پارک کند.

با این وجود تنها به این دلیل که این شخص می تواند در داخل تاسیسات رانندگی کند به این معنی نیست که می تواند وسیله نقلیه خود را در هر جایی که خواست پارک کند. در مقابل، برای هر کارمند پارکینگی مشخص شده است.شخص فقط می تواند در پارکینگ مخصوص خود پارک کرده و اجازه پارک در جای مدیرعامل را ندارد.
OAuth پروتکلی برای کنترل دسترسی است. این همان مسئله ای است که باعث می شود شخص به پارکینگ صحیح برود. در مقابل، SAML یک پروتکل احراز هویت است که به شخص اجازه عبور از نگهبانی را می دهد.

ارائه دهنده هویت (IdP) یا سرویس احراز هویت مرکزی (SSO) می تواند از هر دوی این پروتکل ها به طور هم زمان استفاده کند. به علاوه در بعضی از موارد استفاده از OAuth به تنهایی نیز امکان پذیر بوده در حالی که در بسیاری از موارد OAuth راهکاری برای احراز هویت ارائه نمی دهد.

به طور خلاصه OAuth و SAML پروتکل های مختلفی هستند و برای اهداف متفاوتی استفاده می شوند، اما هردو اغلب در SSO استفاده می شوند.

SAML OAuth امکانات
یک پروتکل احراز هویت است. یک پروتکل کنترل دسترسی است. پروتکل
SAML توسط کسانی مورد استفاده قرار می‌گیرد که به دنبال مدیریت یکپارچه هویت هستند. آن‌ها از این هویت برای ورود کاربران به برنامه های کاربردی مختلف استفاده خواهند کرد. OAuth توسط کسانی مورد استفاده قرار می‌گیرد که به دنبال حفظ هویت نیستند، بلکه بیشتر سعی دارند از اجرای پروتکل امن توسط برنامه‌های کاربردی مانند گوگل، مایکروسافت و Paypal اطمینان حاصل کنند که هویت‌های آن‌ها معتبر است. سناریوی استفاده
SAML معمولا برای برنامه های مبتنی بر مرورگر مناسب است. OAuth هم برای مرورگر، هم برای برنامه های موبایل و هم دسکتاپ مناسب است. برنامه کاربردی هدف
SAML به طور گسترده ای برای برنامه های سازمانی استفاده می شود. OAuth به طور گسترده ای برای برنامه های مشتری و دسترسی به API استفاده می شود. موارد استفاده

اجزا OAuth

کاربر نهایی / مالک منابع

مالک منابع در واقع کاربر نهایی است که می خواهد به منبع محافظت شده دسترسی پیدا کند. کاربر بسته به دسترسی های مجاز خود می تواند عملیات خواندن / نوشتن را روی منبع انجام دهد.

سرور منابع

منبعی که توسط کاربر نهایی درخواست می شود در سرور منابع وجود دارد. سرور منابع درخواست های دسترسی یا به روزرسانی منابع را کنترل می کند و همچنین درخواست های احراز هویت را به سرور OAuth یا سرور کنترل دسترسی ارسال می کند. به علاوه اجازه دسترسی به منابع را نمی دهد مگر اینکه درخواست شامل رمز دسترسی مناسب باشد.

سرور کنترل دسترسی

سرور OAuth سرور احراز هویت است که درخواستهای ورود به سیستم را کنترل می کند و هویت کاربر را تأیید می کند. همچنین اطلاعات کاربری درخواستی را به همراه رمز دسترسی به سرور منبع فراهم می کند.

اجزا OAuth

  • عدم نیاز به صفحه ورود به سامانه: از آنجایی که OAuth امکان شناسایی هویت کاربران با استفاده از درگاه احراز هویت مرکزی را فراهم می کند، این امر نیاز سامانه را به پیاده سازی درگاه احراز هویت خود برطرف می کند.
  • اشتراک آسان داده های کاربر: کاربر از طریق یک درگاه واحد احراز هویت می شود و به تمامی سامانه های مورد نیاز خود تنها با یک اعتبارنامه دسترسی پیدا می کند. این امر باعث می شود دیگر نیازی به به خاطر سپاری چند رمز عبور وجود نداشته باشد.
  • قابلیت اعتماد بیشتر: معمولاً برنامه های احراز هویت (گوگل ، فیس بوک و غیره) بیشتر از برنامه شخصی شما مورد اعتماد کاربران هستند. از این رو ، آنها بدون نگرانی در مورد به اشتراک گذاری مستقیم اطلاعات خود ، به راحتی خود را در آن سرویس ها تأیید اعتبار می کنند.
  • اجرای آسان: OAuth به طور انحصاری از پروتکل HTTP برای ارسال و دریافت اطلاعات و رمزهای دسترسی استفاده می کند. این باعث می شود که پیاده سازی سرویس OAuth و همچنین برنامه کاربردی سمت مشتری ساده تر باشد زیرا هیچ استاندارد پیچیده یا تعریف خاصی در این مورد وجود ندارد.

محدودیت ها

آسیب پذیری امنیتی

اگر از یک سرویس واحد برای اتصال به سایر سایت های مورد علاقه خود استفاده کنید، درصورتی که حساب واحد هک شود ، عواقب آن به جای فقط در یک سایت در چندین سایت احساس می شود. به عنوان مثال ، اگر برای همه برنامه ها با فیس بوک وارد سیستم شده اید و بعداً حساب فیس بوک شما هک شده است ، به جای فقط یک سایت ، هویت و اطلاعات شما در چندین سایت به خطر می افتد.

سواستفاده از داده ها

با استفاده از OAuth می توانید دسترسی به اطلاعات خود را توسط یک سرویس مرکزی مدیریت کنید. سایت های دیگر صرفا می توانند به اطلاعاتی که مشخص کرده و رضایت خود را برای به اشتراک گذاری آن ها اعلام کرده اید دسترسی داشته باشند. با این حال لازم است به سرویس احراز هویت مرکزی که مدیریت اطلاعات شما را بر عهده دارد اعتماد کنید.

بدون دیدگاه

© تمامی حقوق برای شرکت دانش بنیان آتین محفوظ است.