نحوه عملکرد مجوز کاربر

اگر با خدمات یا مجوز Google Identity جدید یا ناآشنا هستید، با خواندن نمای کلی شروع کنید.

Google یک کتابخانه جاوا اسکریپت ارائه می‌کند که شامل ویژگی‌های مجوز برای کمک به شما در مدیریت دامنه‌ها، کسب رضایت کاربر و کار آسان‌تر با جریان‌های استاندارد OAuth 2.0 است. برنامه وب شما که در مرورگر کاربر اجرا می شود، از این کتابخانه برای مدیریت جریان ضمنی OAuth 2.0 یا برای شروع جریان کد مجوز که در پلتفرم باطن شما به پایان می رسد، استفاده می کند.

فقط احراز هویت دامنه دارد

چندین حوزه فقط برای احراز هویت کاربر استفاده می شود: email ، profile و openid . اگر برنامه شما فقط از این محدوده‌ها استفاده می‌کند، در نظر بگیرید که آیا رمز JWT ID و ورود به سیستم با Google برای ثبت‌نام و ورود کاربر نیازهای شما را برآورده می‌کند یا خیر. در بیشتر موارد، این ساده ترین و ساده ترین روش موجود برای احراز هویت کاربر است.

اصطلاحات و مفاهیم کلیدی

این راهنماها فرض می کنند که شما درک اولیه ای از مفاهیم OAuth 2.0 و استانداردهای IETF مانند RFC6749 دارید. عبارات زیر در سراسر راهنمای مجوز استفاده می شود:

  • توکن Access یک اعتبارنامه کوتاه مدت برای هر کاربر است که توسط Google صادر می شود و برای تماس ایمن با APIهای Google و دسترسی به داده های کاربر استفاده می شود.
  • کد مجوز یک کد موقتی است که توسط Google برای شناسایی ایمن کاربرانی که از مرورگر به حساب Google خود وارد می‌شوند، صادر می‌کند. پلتفرم باطن شما این کد را برای دسترسی و نوسازی توکن ها مبادله می کند.
  • Refresh Token یک اعتبارنامه با عمر طولانی برای هر کاربر است که توسط Google صادر می‌شود و به طور ایمن در پلتفرم شما ذخیره می‌شود و می‌توان از آن برای دریافت یک رمز دسترسی جدید و معتبر حتی زمانی که کاربر حضور ندارد استفاده کرد.
  • Scope توکن ها را به مقدار مشخص و محدودی از داده های کاربر محدود می کند، برای اطلاعات بیشتر به OAuth 2.0 Scopes for Google API مراجعه کنید.
  • حالت پاپ آپ یک جریان کد مجوز است که بر اساس یک فراخوان جاوا اسکریپت در حال اجرا در مرورگر کاربر است. Google کنترل کننده پاسخ تماس شما را فراخوانی می کند که پس از آن مسئول ارسال کد احراز هویت به پلتفرم شما است، نحوه انجام این کار به شما بستگی دارد.
  • حالت تغییر مسیر یک جریان کد مجوز مبتنی بر تغییر مسیرهای HTTP است. عامل کاربر ابتدا به Google هدایت می شود، تغییر مسیر دوم از Google به نقطه پایانی کد مجوز پلت فرم شما شامل کد است.

طول عمر توکن توسط Google به عنوان صادرکننده تعیین می شود. به دلیل عوامل مختلف، مدت زمان دقیق ممکن است متفاوت باشد.

OAuth 2.0 جریان دارد

دو جریان، ضمنی و کد مجوز مورد بحث قرار می‌گیرند. هر دو یک نشانه دسترسی مناسب برای استفاده با Google API را برمی‌گردانند.

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

کتابخانه جاوا اسکریپت خدمات هویت گوگل از استاندارد OAuth 2.0 پیروی می کند تا:

  • جریان ضمنی را مدیریت کنید تا برنامه وب درون مرورگر شما را قادر سازد تا به سرعت و به آسانی رمز دسترسی را از Google دریافت کند که برای فراخوانی APIهای Google ضروری است.
  • جریان کد مجوز را از مرورگر کاربر شروع کنید.

مراحل مشترک

جریان کد ضمنی و مجوز هر دو به یک شکل شروع می شوند:

  1. برنامه شما درخواست دسترسی به یک یا چند محدوده را دارد.
  2. Google یک گفتگوی رضایت را برای کاربر نمایش می دهد و در صورت لزوم ابتدا کاربر را وارد حساب Google خود می کند.
  3. کاربر به صورت جداگانه هر محدوده درخواستی را تایید می کند.

سپس هر جریان با مراحل مختلف به پایان می رسد.

هنگام استفاده از جریان ضمنی

  • Google از یک کنترل‌کننده پاسخ به تماس استفاده می‌کند تا برنامه شما را از نتیجه رضایت مطلع کند و یک کد دسترسی برای هر حوزه‌ای تأیید شده برگرداند.

هنگام استفاده از جریان کد auth

  • Google با یک کد مجوز برای هر کاربر پاسخ می دهد:
    • در حالت تغییر مسیر، کد به نقطه پایانی کد مجوز پلت فرم شما برگردانده می شود.
    • در حالت پاپ آپ، کد به کنترل کننده پاسخ تماس برنامه درون مرورگر شما برگردانده می شود، بدون اینکه کاربران نیازی به ترک وب سایت شما داشته باشند.
  • شروع در مرحله 4: پاسخ سرور OAuth 2.0 را مدیریت کنید پلتفرم باطن شما یک تبادل سرور به سرور با Google را تکمیل می کند، که در نهایت منجر به بازگرداندن رمز به روز رسانی هر کاربر و رمز دسترسی به پلت فرم شما می شود.

قبل از به دست آوردن نشانه دسترسی، کاربران باید برای برنامه شما رضایت دهند تا به محدوده های درخواستی دسترسی پیدا کند. برای انجام این کار، Google یک گفتگوی رضایت را در مرحله 2 بالا نمایش می دهد و نتیجه را در myaccount.google.com/permissions ثبت می کند.

نام برنامه، نشان‌واره، خط‌مشی رازداری، شرایط خدمات و محدوده‌های درخواستی شما همراه با گزینه تایید یا لغو درخواست به کاربر نمایش داده می‌شود.

در شکل 1، گفتگوی رضایت برای یک محدوده نشان داده شده است. هنگامی که یک محدوده درخواست می شود، هیچ چک باکسی برای تایید یا رد یک محدوده لازم نیست.

User consent dialog with Cancel or Continue buttons and a single scope, no
checkboxes are shown.

شکل 1: گفتگوی رضایت کاربر با یک محدوده واحد.

در شکل 2، گفتگوی رضایت برای چندین حوزه نشان داده شده است. هنگامی که بیش از یک محدوده درخواست می شود، چک باکس های جداگانه لازم است تا به کاربر اجازه دهد هر محدوده را تأیید یا رد کند.

User consent dialog with Cancel or Continue buttons and multiple scopes, each
scope has a checkbox
selector.

شکل 2: گفتگوی رضایت کاربر با دامنه های متعدد.

حساب های کاربری

برای ثبت رضایت و صدور رمز دسترسی، یک حساب Google لازم است. قبل از این، هر یک از کاربران باید با ورود به حساب Google خود را در Google احراز هویت کرده باشند.

اگرچه الزامی نیست، توصیه می‌شود از Sign In With Google برای ثبت‌نام و ورود به برنامه وب یا پلتفرم باطن خود استفاده کنید. انجام این کار با به حداقل رساندن تعداد مراحل مورد نیاز، اصطکاک کاربر را کاهش می دهد و به صورت اختیاری شما را قادر می سازد تا به راحتی توکن های دسترسی را با حساب های فردی در پلتفرم خود مرتبط کنید.

به عنوان مثال، استفاده از ورود به سیستم با Google، یک جلسه حساب Google فعال ایجاد می‌کند، بنابراین نیازی به درخواست بعدی کاربر برای ورود به حساب Google در هنگام درخواست مجوز نمی‌باشد. اگر انتخاب کنید که کاربران را با روش‌های دیگری مانند نام کاربری و رمز عبور یا سایر ارائه‌دهندگان هویت در برنامه خود احراز هویت کنید، آنها همچنان برای کسب رضایت باید ابتدا وارد حساب Google شوند.

افزودن یک اشاره ورود به سیستم در طول اولیه‌سازی مجوز - معمولاً آدرس ایمیل حساب Google کاربر - به Google امکان می‌دهد از نمایش انتخابگر حساب صرفه‌جویی کند و کاربران را یک قدم صرفه‌جویی کند. شناسه شناسه رمز بازگردانده شده توسط Sign In With Google حاوی آدرس ایمیل کاربر است.

برنامه‌های وب که فقط در مرورگر اجرا می‌شوند ممکن است برای احراز هویت کاربر فقط به Google متکی باشند و سیستم مدیریت حساب کاربری را پیاده‌سازی نکنند. در این سناریو، که به عنوان جریان ضمنی شناخته می‌شود، نیازی به مرتبط کردن توکن تازه‌سازی با حساب کاربری و مدیریت ذخیره‌سازی امن نیست.

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

کاربران می توانند در هر زمان رضایت خود را از تنظیمات حساب Google خود مشاهده یا لغو کنند.

در صورت تمایل، برنامه یا پلتفرم وب شما می‌تواند با google.accounts.oauth2.revoke تماس بگیرد تا نشانه‌ها را باطل کند و رضایت کاربر را حذف کند، که زمانی مفید است که کاربر حساب خود را از پلتفرم شما حذف کند.

سایر گزینه های مجوز

از طرف دیگر، مرورگرها ممکن است با استفاده از جریان ضمنی با فراخوانی مستقیم نقاط پایانی OAuth 2.0 Google همانطور که توسط OAuth 2.0 برای برنامه های کاربردی وب سمت مشتری توضیح داده شده است، نشانه های دسترسی به دست آورند.

به طور مشابه، برای جریان کد مجوز می‌توانید روش‌های خود را پیاده‌سازی کنید و مراحل ذکر شده در استفاده از OAuth 2.0 برای برنامه‌های وب سرور را دنبال کنید.

در هر دو مورد، ما قویاً توصیه می‌کنیم از کتابخانه خدمات هویت Google استفاده کنید تا زمان و تلاش توسعه خود را کاهش دهید و خطرات امنیتی مانند مواردی که توسط OAuth 2.0 Security Best Current Practice توضیح داده شده است را به حداقل برسانید.