oauth – آیا نیاز به ایجاد یک کاربر در پایگاه داده دارم؟

این سوال را می توان با روش های مختلف تفسیر کرد:

 باید پایگاه داده من از کاربر غیر ریشه استفاده شود

بله، شما باید یک کاربر غیر ریشه (یکی برای هر یک از برنامه های منحصر به فرد دسترسی به پایگاه داده را برای جلوگیری از وردپرس خود را با استفاده از DB (ایجاد برخی از واکشی وردپرس تصادفی است که در آینده می آید) از داشتن دسترسی کامل به شما فوق العاده فانتزی سفارشی وب-apps-db و گرفتن یک لیست کامل از تمام ایمیل های کاربر شما که جمع آوری کرده اید.

 باید یک جدول کاربر را در پایگاه داده من ایجاد کنم

تأیید اعتبار یا نه … این نوعی بی فایده است. اگر میخواهید پیوند [email protected] را با نام مستعار ترجیح دهید پسر فوق العاده شاد … یا یکی از کاربران خود تصمیم میگیرد که qmail بکشد و آنها می خواهند تغییر کنند حساب های ایمیل وجود دارد به [email protected] … جدول کاربر با UUID داخلی برای هر کاربر ممکن است بسیار مفید باشد.

 آیا من نیاز به ذخیره یك رمز عبور برای گذرواژه

بله و نه … اعتماد کامل به برخی از احراز هویت سایر وب سایت ها ممکن است شما را از داشتن نگرانی در مورد داشتن هک کردن db محلی خود و نیاز به گزارش دهی چند هزار هش رمز عبور کاربر خود در وحشی. اما در عین حال، اگر یک آسیب پذیری در احراز هویت شخص ثالث پیدا شود، می تواند شما را در وضعیت بدی قرار دهد؛ زیرا شما کنترل آن را بر روی شخص ثالث نداشته اید … و هیچ چیز به عقب بر نمی گردد اگر این شخص ثالث

این بیشتر از یک تصمیم کسب و کار از یک تصمیم امنیتی است … بسیاری از جوانب مثبت و منفی از رفتن به هر راه وجود دارد

تأیید اعتبار – آیا JWT نشانه ها را در مرورگر واقعا خلع سلاح می کند؟

توجه: من به طور کامل تصدیق می کنم ممکن است چیزی که من در تصویر از دست بدهم، بخشی از دلیل من برای ارسال. من می خواهم نظرات افراد بیشتری را تجربه کنم که از پیاده سازی های مربوط به authN / Z برخوردارم.

در اینجا این است که در این کل "هیچ نشانه های refresh در برنامه های مشتری" گیر کرده ام:

فرض من این است که بدون نشانه refresh ما نیز نمی توانیم، به دلیل دلایل تجربه کاربر، یک نشانه دسترسی بسیار کوتاه مدت داشته باشیم، یعنی اگر ما تا به حال یک نشانه دسترسی که هر 15 دقیقه منقضی می شود، بدون شادی برای تازه کردن ما مجبور به ورود دوباره هر 15 دقیقه.

مشکل من: با گسترش طول عمر نشانه دسترسی، ما یک مهاجم بالقوه MIDM را یک سلاح خطرناک تر می کنیم، یعنی نشانه ای که به منابع دسترسی دارد که می تواند روزها یا حتی برای همیشه باشد ( همانطور که در بسیاری از پروژه ها دیده ام.

برای من، ساده ترین راه برای حل چنین وضعیتی یک نشانه تازه کردن است، حتی یکی که در انتهای جلوی آن قرار دارد، زیرا به نظر من هنوز هم طول می کشد این نشانه مجدد ممکن است:

  • همچنین یک JWT که منقضی می شود اما ممکن است منقضی شود در یک هفته یا بیشتر
  • یک نشانه "استفاده تنها یک بار" که برای نوشتن مجوز دسترسی مورد استفاده قرار می گیرد و پس از آن توسط یک نشانه تازه کردن جدید جایگزین می شود

به نظر من این رویکرد در برابر نشانه دسترسی طولانی مدت چندین مشکل را حل می کند:

  • با این روش، من یک نشانه دسترسی کوتاه مدت را نگه می دارم، بنابراین اگر آن را به دست بد، آن را نمی توان برای مدت طولانی استفاده می شود
  • اگر فکر می کنید نشانه تازه کردن است حتی بدتر، من مخالف هستم، زیرا دو چیز وجود دارد که آن را بهتر می کند:

    1. هنگامی که کاربر اصلی دوباره نشانه خود را دوباره تجسم می کند که نشانه قبلی بازنشانی دیگر نمی تواند قابل استفاده باشد
    2. اگر ما فرض کنیم کسی کسی را دزدی نشانه refresh ما در حالی که ما ' مرور مرورگر، در عرض چند دقیقه مرورگر ما سعی خواهد کرد که از آن کد بازنشانی استفاده کند، (زیرا شخص دیگری آن را استفاده کرده و بنابراین دیگر قابل استفاده نیست) و ما را به ورود به سیستم دعوت می کند که به طور کامل دیگر مجموعه ای از آخرین نشانه دریافت شده حتی در صورتی که 1 و 2 در هر سناریو صحت نداشته باشند (من من هستم
    3. چندین جلسه / تجدید نشانه اجازه داده شده است بنابراین نه یک پشته یا تازه کردن نشانه اما چند) من هنوز هم شرط می بندم که شما بهتر از جعل جوایز بازنشانی نامعتبر از هر روش که شما می خواهید از شما معتبر بودن توالی دسترسی است. یک نشانه دسترسی JWT به خودی خود معتبر است و کل هدف استفاده از آن این است که شما می توانید با تایید آن اعتماد کنید بدون اینکه دیگر عملیات گرانقیمت مانند چک کردن با سرور auth را در صورت اضافه بودن آن در لیست سیاه قرار دهید. این بدان معناست که نیاز به بررسی این نوع چیز برای هر درخواست هر بار با هر کدام از دسترسی ها انجام می شود = بسیار مقیاس پذیر نیست، به ویژه اگر شما این را مقایسه فقط به داشتن این نوع کار هر بار 15 دقیقه برای نشانه refresh (شما می توانید یک لیست سیاه لیست نشانه ها را نگه دارید)

بنابراین، با همه این گفته است، داشتن یک نشانگر بازنشانی "استفاده از یک بار" از طرف مشتری که همچنین JWT است و منقضی می شود که غیر منطقی است؟ ما از داشتن نشانه دسترسی در هفته گذشته اجتناب می کنیم، چگونه می تواند بد باشد؟