Пређи на главни садржај

Двофакторска аутентификација (2FA)

Налога могу бити заштићена са време-базирано једнапут лозинка (TOTP) двофакторска аутентификација на врху од лозинка. То је опционално од корисник профил по подразумеваној вредности, и беларабежена развој могу направити то обавезно за све. Сваки RFC 6238 аутентификатор апликација радови — Google Authenticator, Microsoft Authenticator, Authy, Aegis, FreeOTP — јер спровођење је стандард (SHA-1, 6 цифре, 30-секунд корак); не својина сервер компонента је укључена.

Како то функционише​

  • Домена. MFA живи на AppUser агрегат (Access контекст). Корисник је пријаву кроз намера-откривање методе — BeginMfaEnrollment, ConfirmMfaEnrollment, ConsumeBackupCode, RegenerateBackupCodes, DisableMfa — тако инвазивни (тајна мора бити потврђена пред то активира; резервни код је једно-користи) су наведено у једна место.
  • TOTP. Генерирање и проверка седи позади Core ITotpAuthenticator интерфејс, спровођење у Infrastructure са Otp.NET библиотека. Проверка толеријно ±1 време-корак од часовника искривљење.
  • Тајна на остатку. Аутентификатор тајна је чувана шифрована преко ISecretProtector (EncryptionPurposes.MfaSecret) — никад на обичан текст.
  • Резервни кодови. Десет једно-користи опоравак кодови су издани на пријаву, показана једнапут, и чувана само као SHA-256 хеши (MfaBackupCodes). Свака радови управо једнапут; потрошена код је одбијена затим.

Омогућавање то (профил)​

На Налог страна (/account) Двофакторска аутентификација сечење показује текући статус:

  1. Омогови двофакторска отвара MudBlazor дијалог са QR код (рендерирано сервер-страна као SVG преко Net.Codecrete.QrCodeGenerator) плус ручна постављање кључ.
  2. Скан то, унесе 6-цифре код до потврди — ово верификована позиција тајна пред активирање.
  3. Дијалог тада показе резервни кодови; спаси им. 2FA је сада на.

Исти сечење дозволи пријаву корисник обновити резервни кодови или искључи 2FA — обе требају налог лозинка до потврди.

Пријаву са 2FA​

Пријава је два-корак ток једнапут 2FA је омогућена:

  1. Лозинка корак (POST /api/auth/login). На успех у auth колачиће је не издан тек; уместо кратак-живо (5-минута), шифрована позиција колачиће је поставити и корисник је послан /login/2fa.
  2. Изазов корак (POST /api/auth/login/verify-2fa). Корисник унесе TOTP код или свака неискоришћена резервни код. На успех позиција колачиће је пао и правост auth колачиће је издан.

Неуспешна други-фактор обиди рачун према постојеће налога закупљење (AuthLockout), и в auth крајњу тачку су стопа-ограничено.

Обавезно 2FA за беларабежена развој​

Регулирано препродајач може захтев 2FA за сваки налог:

// appsettings / окружење
"App": { "Branding": { "RequireMfa": true } } // App__Branding__RequireMfa=true

Када RequireMfa је на и корисник без 2FA потписа у, лозинка корак извештава mfaSetupRequired и MfaEnforcementMiddleware редиректира њихова страна навигације до /account док они завршити пријаву. То подразумевано на false, тако неконфигурирано развој задржава 2FA опционално. Видети Беларабежена.

Крајњу тачку​

Метода & путањаНамена
POST /api/auth/loginЛозинка корак; враћа mfaRequired (изазов) или потписује у
POST /api/auth/login/verify-2faДруги-фактор корак (TOTP или резервни код)
GET /api/auth/mfa/statusMfaEnabled, позиција, преостали резервни-код број
POST /api/auth/mfa/setupПочни пријаву — враћа тајна, otpauth:// URI, QR SVG
POST /api/auth/mfa/confirmПотврди код, активира, враћа резервни кодови
POST /api/auth/mfa/disableИскључи (лозинка-потврђено)
POST /api/auth/mfa/backup-codes/regenerateПроблем свеже скупа (лозинка-потврђено)

Тестови​

  • Јединица — UnitTests/Access/OtpNetTotpAuthenticatorTests.cs (RFC 6238 вектори), AppUserMfaTests.cs (пријаву/транзиција/једно-користи инвазивни), MfaBackupCodesTests.cs.
  • Интеграција — IntegrationTests/MfaPersistenceTests.cs (пријаву → потврди → утроши, каскада избаци)