Двофакторска аутентификација (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) Двофакторска аутентификација сечење показује текући статус:
- Омогови двофакторска отвара MudBlazor дијалог са QR код (рендерирано сервер-страна као SVG преко
Net.Codecrete.QrCodeGenerator) плус ручна постављање кључ. - Скан то, унесе 6-цифре код до потврди — ово верификована позиција тајна пред активирање.
- Дијалог тада показе резервни кодови; спаси им. 2FA је сада на.
Исти сечење дозволи пријаву корисник обновити резервни кодови или искључи 2FA — обе требају налог лозинка до потврди.
Пријаву са 2FA
Пријава је два-корак ток једнапут 2FA је омогућена:
- Лозинка корак (
POST /api/auth/login). На успех у auth колачиће је не издан тек; уместо кратак-живо (5-минута), шифрована позиција колачиће је поставити и корисник је послан/login/2fa. - Изазов корак (
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/status | MfaEnabled, позиција, преостали резервни-код број |
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(пријаву → потврди → утроши, каскада избаци)