Δύο-παράγοντας τυλίγματος (2FA)
Λογαριασμοί μπορώ να προστατευθούν με χρόνο-βασισμένη ενιαίο-χρήση κωδικός πρόσβασης (TOTP) δύο-παράγοντας τυλίγματος σε κορυφή του κωδικός πρόσβασης. Είναι προαιρετικό από το χρήστη προφίλ κατά προεπιλογή, και ένα λευκό-ετικέτα ανάπτυξη μπορώ κάνουν αυτό υποχρεωτικό για όλα. Κάθε RFC 6238 αυθεντικοποίηση εφαρμογή εργάζεται — Google Authenticator, Microsoft Authenticator, Authy, Aegis, FreeOTP — γιατί υλοποίηση είναι τυπικό (SHA-1, 6 ψηφία, 30-δευτερόλεπτο βήμα). χωρίς ιδιοκτησίας διακομιστή συστατικό είναι εμπλεκόμενο.
Πώς λειτουργεί
- Τομέας. MFA ζει σε το
AppUseraggregate (Πρόσβασης περιεχόμενο). Ένας χρήστης είναι εγγεγραμμένη μέσα δήλωση-αποκάλυψη μέθοδοι —BeginMfaEnrollment,ConfirmMfaEnrollment,ConsumeBackupCode,RegenerateBackupCodes,DisableMfa— έτσι αναλλοίωτα (α μυστικό πρέπει επιβεβαίωση πριν ενεργοποιεί. ένα ασφάλεια κωδικό είναι ενιαίο-χρήση) εξαναγκάζονται σε ένα μέρος. - TOTP. Δημιουργία και επαλήθευση κάθονται πίσω το Core
ITotpAuthenticatorδιεπαφή, υλοποίηση σε Infrastructure με το Otp.NET βιβλιοθήκη. Επαλήθευση ανοχή ±1 χρόνο-βήμα του ρολόι αποκλίσεις. - Μυστικό στο ανάπαυση. Ο αυθεντικοποίηση μυστικό αποθηκεύεται κρυπτογραφημένα μέσα
ISecretProtector(EncryptionPurposes.MfaSecret) — ποτέ σε plaintext. - Ασφάλεια κωδικοί. Δέκα ενιαίο-χρήση ανάκτηση κωδικοί εκδοθεί σε εγγραφή, δείχνει μία φορά, και αποθηκευμένο μόνο
ως SHA-256 κατακερματίζει (
MfaBackupCodes). Κάθε εργάζεται ακριβώς μία φορά. ένα ξοδευμένο κωδικό απορρίπτεται τη συνέχεια.
Ενεργοποίηση αυτό (προφίλ)
Στο Λογαριασμό σελίδα (/account) το Δύο-παράγοντας τυλίγματος τμήμα δείχνει τη τρέχουσα κατάσταση:
- Ενεργοποιήστε δύο-παράγοντας ανοίγει ένα MudBlazor διάλογος με ένα QR κωδικό (αποδίδεται διακομιστή-πλευρά ως SVG μέσα
Net.Codecrete.QrCodeGenerator) συν το χειροκίνητα ρύθμιση κλειδί. - Σάρωση αυτό, εισάγετε 6-ψηφίο κωδικό για επιβεβαίωση — αυτό επαληθεύει το εκκρεμής μυστικό πριν ενεργοποιώντας.
- Ο διάλογος στη συνέχεια δείχνει το ασφάλεια κωδικοί. σώσετε τα. 2FA είναι τώρα σε.
Η ίδια ενότητα αφήνει ένα εγγεγραμμένη χρήστη αναδημιουργία ασφάλεια κωδικοί ή διακοπή 2FA — αμφότερα απαιτούν το λογαριασμό κωδικός πρόσβασης για επιβεβαίωση.
Υπογραφή σε με 2FA
Σύνδεση είναι ένα δύο-βήμα ροή μόλις 2FA ενεργοποιηθεί:
- Κωδικός πρόσβασης βήμα (
POST /api/auth/login). Σε επιτυχία το auth cookie είναι δεν εκδοθεί ακόμη. αντί ένα σύντομη-διαρκείας (5-λεπτό), κρυπτογραφημένα εκκρεμή cookie έχει ορίστε και ο χρήστης αποστέλλεται σε/login/2fa. - Πρόκληση βήμα (
POST /api/auth/login/verify-2fa). Ο χρήστης εισάγει TOTP κωδικό ή κάθε δεν χρησιμοποιούμενο ασφάλεια κωδικό. Σε επιτυχία το εκκρεμή cookie πέσει και το πραγματικό auth cookie εκδοθεί.
Απέτυχε δεύτερο-παράγοντας προσπάθειες λογαριασμό προς τα υπάρχοντα lockout (AuthLockout), και το auth
τελικά σημεία είναι ποσοστό-περιορισμένο.
Υποχρεωτικό 2FA για ένα λευκό-ετικέτα ανάπτυξη
Μια ρυθμιστικά reseller μπορώ να απαιτούν 2FA για κάθε λογαριασμό:
// appsettings / περιβάλλον
"App": { "Branding": { "RequireMfa": true } } // App__Branding__RequireMfa=true
Όταν RequireMfa είναι σε και ένας χρήστης χωρίς 2FA υπογράφει σε, κωδικός πρόσβασης βήμα αναφορές
mfaSetupRequired και MfaEnforcementMiddleware ανακατευθύνει τους σελίδα πλοήγησης σε /account έως ότου
τελειώσει εγγραφή. Προεπιλογές σε false, έτσι ένα unconfigured ανάπτυξη κρατά 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(εγγραφή → επιβεβαίωση → κατανάλωση, κασκάδα διαγραφή) καιMfaFlowTests.cs(πλήρης HTTP δύο-βήμα σύνδεση με TOTP + ασφάλεια κωδικό, και το υποχρεωτικό-εγγραφή πύλη). - E2E —
E2ETests/MfaFlowTests.cs: ενεργοποίηση από το προφίλ (QR + επιβεβαίωση + ασφάλεια κωδικοί) και ολοκληρώστε α κατακρημνιστύ υπογραφή-σε, σε desktop και κινητό viewports.