Files

12 KiB
Raw Blame History

مشخصات درس‌نامه: ارائه‌دهندگان احراز هویت خارجی (Google، GitHub و الگوی ورود پیامکی)

  • شناسه در سیلابس: L10.6
  • فصل: فصل ۱۰: اتصال سرویس‌های بیرونی (Ch 10)
  • نوع محتوا: 📘 درس‌نامه متنی
  • زمان تقریبی مطالعه: ۱۸ دقیقه
  • پیش‌نیازهای مستقیم: L10.5 (ارسال ایمیل‌های تراکنشی با SMTP)

۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)

دانشجو پس از مطالعهٔ این درس‌نامه باید بتواند:

  • درک کند (Understand): سازوکار پروتکل استانداردهای احراز هویت اجتماعی (OAuth 2.0) را شرح دهد و بداند چرا ورود با یک کلیک، نرخ تبدیل و رضایت کاربران را به شدت افزایش می‌دهد.
  • تحلیل/ارزیابی کند (Evaluate): مزایا و معایب ورود با حساب‌های بین‌المللی (Google و GitHub) را در مقایسه با الگوی غالب بومی ایران یعنی ورود با رمز یک‌بارمصرف پیامکی (SMS OTP) ارزیابی کند.
  • به‌کار ببندد (Apply): ارائه‌دهندگان GitHub و Google را در کنسول Supabase پیکربندی کرده و دکمه‌های ورود با یک کلیک را در پنل ادمین پورتفولیو فعال نماید.
  • ایجاد کند (Create): معماری و جریان گام‌به‌گام پیاده‌سازی ورود با شماره موبایل و کد یک‌بارمصرف پیامکی (OTP) با وب‌سرویس کاوه‌نگار/SMS.ir را طراحی و مستند کند.

۲. محدوده و مرزهای محتوا (Scope & Boundaries)

آنچه باید پوشش داده شود (In-Scope):

  1. پایان دوران فرم‌های ثبت‌نام طولانی با رمزهای عبور فراموش‌شدنی:
    • چرا هیچ کاربری حوصله انتخاب رمز ۱۲ رقمی با حروف بزرگ و کوچک و نماد را ندارد؟
  2. پروتکل OAuth 2.0 به زبان بسیار ساده:
    • استعاره کلید هتل و کارت اتاق: گوگل یا گیت‌هاب هویت کاربر را تایید می‌کنند و به پورتفولیوی شما یک کارت تردد موقت (Access Token) می‌دهند.
  3. مراحل فعال‌سازی ورود با GitHub و Google در Supabase:
    • ساخت OAuth App در تنظیمات توسعه‌دهندگان GitHub (Developer Settings).
    • ساخت پروژه و دریافت Client ID و Client Secret در Google Cloud Console.
    • تنظیم Callback URL سوپابیس (https://<project-id>.supabase.co/auth/v1/callback).
    • فعال‌سازی تاگل ارائه‌دهنده در داشبورد Authentication سوپابیس.
  4. کدنویسی فرانت‌اند Next.js برای دکمه‌های ورود:
    • فراخوانی ساده supabase.auth.signInWithOAuth({ provider: 'github' }).
    • هدایت خودکار کاربر پس از ورود موفق به پنل مدیریت (/admin).
  5. معماری الگوی ورود بومی ایرانی: لاگین پیامکی (SMS OTP Login):
    • بررسی چرخه ورود در اپ‌های محبوب مانند اسنپ و دیجی‌کالا:
      • ۱. کاربر شماره موبایل خود را وارد می‌کند.
      • ۲. سرور یک کد تصادفی ۵ رقمی تولید کرده و با زمان انقضای ۲ دقیقه (TTL) در جدول یا سشن ذخیره می‌کند.
      • ۳. فراخوانی الگوی اعتبارسنجی وب‌سرویس کاوه‌نگار/SMS.ir برای تحویل در ۲ ثانیه.
      • ۴. کاربر کد را وارد می‌کند؛ سرور مطابقت داده و سشن لاگین ایجاد می‌کند.
  6. کال‌اوت‌های آموزشی و هشدار کوئرا:
    • کال‌اوت بنفش (<details class="violet">): تفاوت OAuth (احراز هویت و اجازه دسترسی) با OIDC (شناسایی هویت پروفایل کاربر).
    • کال‌اوت سبز (<details class="green">): مدیریت خودکار کوکی‌ها و رفرش توکن‌ها توسط کتابخانه @supabase/ssr.
    • کال‌اوت قرمز (<details class="red">): تله خطای رایج redirect_uri_mismatch؛ تطابق نداشتن آدرس لوکال‌هاست با دامنه ثبت شده در کنسول گوگل.

آنچه نباید وارد آن شویم (Out-of-Scope):

  • احراز هویت دو مرحله‌ای سخت‌افزاری (Hardware YubiKey).
  • اتصال سیستم‌های سازمانی Active Directory و SAML SSO.

۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)

اصطلاح انگلیسی معادل فارسی مصوب توضیح یک‌خطی ساده
OAuth 2.0 پروتکل تفویض دسترسی آزاد استاندارد امنیتی که به کاربران اجازه می‌دهد بدون اشتراک رمز عبور، با اکانت گوگل/گیت‌هاب وارد شوند
Social Login ورود با شبکه‌های اجتماعی قابلیت احراز هویت سریع با فشردن دکمه ورود از طریق حساب‌های کاربری موجود
Callback URL / Redirect URI آدرس بازگشت مجاز نشانی مشخصی از سایت شما که ارائه‌دهنده پس از تایید هویت، کاربر را به آن برمی‌گرداند
Client ID & Client Secret شناسه و رمز کلاینت شناسه عمومی و رمز فوق‌محرمانه برنامه شما نزد گوگل یا گیت‌هاب
OTP (One-Time Password) رمز یک‌بارمصرف کد موقت و معمولاً چندرقمی که تنها برای یک‌بار ورود و در بازه زمانی کوتاه معتبر است
TTL (Time To Live) طول عمر اعتبار مدت زمانی که یک کد موقت یا سشن پیش از باطل شدن خودکار معتبر باقی می‌ماند

۴. جایگاه‌های تصاویر و نمودارها (Visual & Diagram Placeholders)

راهنمای ایجنت نویسنده: تمام تصاویر باید در پوشهٔ images/ ذخیره شده و در جدول تک‌خانه‌ای وسط‌چین درج شوند:

  1. تصویر کاور درس: images/cover.png
    • موضوع: صفحه ورود شیک با دکمه‌های ورود با یک کلیک گوگل و گیت‌هاب و فیلد دریافت کد تایید پیامکی موبایل.
  2. چرخه ۴ مرحله‌ای تبادل هویت با OAuth 2.0: images/oauth2-flow-diagram.png
    • موضوع: فلوچارت: کاربر روی «ورود با گیت‌هاب» می‌زند \rightarrow انتقال به گیت‌هاب \rightarrow تایید کاربر \rightarrow بازگشت توکن به سوپابیس \rightarrow باز شدن پنل ادمین.
  3. تنظیمات کلیدهای گوگل و گیت‌هاب در داشبورد Supabase: images/supabase-auth-providers-setup.png
    • موضوع: اسکرین‌شات از پنل Supabase Authentication Providers با فیلدهای Client ID و Secret پر شده.
  4. فلوچارت ورود پیامکی بومی (SMS OTP): images/sms-otp-architecture.png
    • موضوع: اینفوگرافیک معماری: دریافت شماره \rightarrow تولید کد ۵ رقمی \rightarrow ارسال با وب‌سرویس پترن کاوه‌نگار \rightarrow اعتبارسنجی ورودی کاربر \rightarrow تولید سشن ورود.

۵. بخش‌بندی و ساختار محتوایی پیشنهادی درس‌نامه (README.md)

  1. تیتر اصلی: # ارائه‌دهندگان احراز هویت خارجی (Google، GitHub و الگوی ورود پیامکی)
  2. مقدمه: چرا ورود با یک کلیک (Social Login) و ورود پیامکی، کاربران را از کابوس به خاطر سپردن ده‌ها رمز عبور نجات می‌دهد؟
  3. جدول کاور درس
  4. استعاره کارت شناسایی بین‌المللی و پاسپورت معتبر:
    • وقتی گوگل هویت کاربر را تایید می‌کند، چرا شما دوباره از کاربر سوال بپرسید؟
  5. پروتکل OAuth 2.0 چگونه کار می‌کند؟
    • کالبدشکافی جریان ریدایرکت، رضایت کاربر، و تحویل توکن سشن.
  6. راه‌اندازی گام‌به‌گام ورود با GitHub در Supabase:
    • آموزش تصویری ساخت OAuth App در گیت‌هاب و وارد کردن کلیدها در کنسول سوپابیس.
  7. راه‌اندازی ورود با Google Cloud:
    • فعال‌سازی OAuth Consent Screen و ساخت Credentials در پنل گوگل.
  8. پیاده‌سازی دکمه‌های ورود در صفحه /admin/login پورتفولیو:
    • کد کامپوننت React با آیکون‌های رسمی Google و GitHub و انیمیشن لودینگ.
  9. الگوی ورود بومی ایران: احراز هویت پیامکی (SMS OTP):
    • چرا در کسب‌وکارهای ایرانی، شماره موبایل هویت اصلی کاربر است؟
    • بررسی معماری ۴ گامی ساخت سیستم ورود پیامکی با کاوه‌نگار/SMS.ir.
  10. جعبه پرامپت طلایی: اتصال دکمه‌های ورود اجتماعی به ایجنت:
    • پرامپت دقیق:

      «من ارائه‌دهنده‌های Google و GitHub را در Supabase فعال کرده‌ام. لطفاً کامپوننت لاگین را به‌روزرسانی کن تا دکمه‌های شکیل ورود با گیت‌هاب و گوگل به آن اضافه شوند. هنگام کلیک، تابع signInWithOAuth فراخوانی شود و در صورت موفقیت کاربر مستقیماً به داشبورد /admin هدایت گردد.»

  11. باکس نکته Quera (<details class="violet">): اهمیت هماهنگی دقیق Redirect URL در محیط Localhost و پس از دیپلوی روی دامنه نهایی.
  12. باکس هشدار Quera (<details class="red">): تله فاش کردن Client Secret گوگل در کدهای فرانت‌اند؛ این کلید فقط و فقط باید در پنل پشتیبانی سوپابیس ثبت شود.
  13. باکس انرژی‌بخش Quera (<details class="green">): آزمایش لاگین با گیت‌هاب شخصی خودتان و دیدن عکس پروفایل و ایمیلتان در داشبورد ادمین پورتفولیو.
  14. جمع‌بندی درس‌نامه: تکمیل مکانیزم‌های ورود؛ ورود به جذاب‌ترین بخش تجاری: اتصال درگاه پرداخت زرین‌پال در درس بعدی.

۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)

  • اصول کارکرد پروتکل OAuth 2.0 به زبان قابل فهم برای افراد غیربرنامه‌نویس تبیین شود.
  • مراحل دریافت کلیدهای GitHub و Google و تنظیم آن‌ها در Supabase به شکل عملی بیان گردد.
  • معماری ورود بومی پیامکی (SMS OTP) به همراه گام‌های پیاده‌سازی تشریح شود.
  • نمونه کدهای اتصال فرانت‌اند و کال‌اوت‌های هشداری امنیتی لحاظ گردند.