من می خواهم 2FA را در برنامه خود پیاده سازی کنم. من یک توسعه دهنده نسبتاً جدید هستم (1 سال پوند بهار / Android Android 1 سال).

در حال حاضر ، برنامه من از Spring Security AuthenticationProviders استفاده می کند تا کاربر را فقط با نام کاربری / رمزعبور خود را با استفاده از دسته کوچک موسیقی جاز رمز عبور خود و با استفاده از BCrypt به عنوان جنجالی هدیه کند.

با نگاه کلی اینترنت ، به نظر نمی رسد که وقتی یک کاربر را برای کد 2FA به چالش می کشید ، "واضح" را پیدا کنم.

سؤال من این است:

  1. تحت چه شرایطی کد 2FA را درخواست می کنید؟
    فقط در صورتی که رشته UserAgent قبلاً برای آن کاربر مشاهده نشده باشد
    ؟ UserAgent && IP قبلاً ترکیبی دیده نشده است؟ … یا چه زمان / با چه ترکیبی؟ (یادگیری ماشین بدون سوال است … noobie here).
  2. آیا باید حساب کاربری قفل شده یا غیرفعال شود همیشه درخواست کد 2FA برای در هر صورت تلاش بعدی برای ورود به سیستم اگر اولین کد وارد شده 2FA تا زمانی که ترکیب 2FA / نام کاربری / رمز عبور صحیح داده نشود ، شکست می خورد.
  3. حدس می زنم محدودیت نرخ در مورد اینکه چند بار 2FA جدید تولید می شود یک استاندارد برای جلوگیری از حمله به DOS است؟ [19659008] هرگونه پیوند یا "بهترین تمرین" واضح تر از این مورد قدردانی می شود!

    متشکرم.