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

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

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

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

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

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

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

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

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

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

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

احراز هویت – ID شناسایی اتصال: دوم ID-Token تنها دارای ویژگی "sub" است

من راه حل client-IAM را با استفاده از WSO2 Identity Server 4.5.1 راه اندازی می کنم. یکی از (چند) برنامه های کاربردی که با من از طریق Open ID ارتباط برقرار می کنند، یک رفتار غیرمنتظره را کشف کرده اند، و اگر برای رفتار Open Id Connect مناسب است یا اگر محصول اشتباه رفتار می کند، نیاز به کمک دارد.

هنگامی که کاربر تأیید هویت می کند، شناسه شناسایی و مجوز-کد بازگردانده می شود. ID_Token شامل تمام ویژگی های کاربر و نقش های قابل اجرا است، و بنابراین نقطه پایانی Userinfo اگر درخواست پس از رونویسی کد رد و بدل شود. یک دوره زمانی که برنامه میخواهد جلسه خود را تازه کند و کاربر را به OP بازگرداند تا یک شناسه جدید شناسایی کند. این کار می کند، اما به دلایلی، ID-Token (و نقطه پایانی Userinfo) فقط "زیر" را در این رویکرد دوم به نمایش می گذارد.

Q: آیا این کار چگونه OIDC قرار است کار کند؟

از شما متشکرم .

PS.
رفتار عجیب دیگر که متوجه شدم (ممکن است به نوعی مرتبط با آن باشد) این است که access_tokens که در طول مبادله کد ایجاد شده برای این برنامه طول عمر 300.000 ثانیه را دارد. بیش از آنچه که من تنظیم کرده ام (هر جا!). هنگامی که access_tokens از طریق کمک ضمنی ارائه می شود اتفاق نمی افتد. من نمیتوانم دلیل دلیلی برای این اتفاق بیافتم، اما اگر وجود داشته باشد، خوشحال خواهم شد که آن را بشنوم.
DS