Skip to main content

Δύο-παράγοντας τυλίγματος (2FA)

Λογαριασμοί μπορώ να προστατευθούν με χρόνο-βασισμένη ενιαίο-χρήση κωδικός πρόσβασης (TOTP) δύο-παράγοντας τυλίγματος σε κορυφή του κωδικός πρόσβασης. Είναι προαιρετικό από το χρήστη προφίλ κατά προεπιλογή, και ένα λευκό-ετικέτα ανάπτυξη μπορώ κάνουν αυτό υποχρεωτικό για όλα. Κάθε RFC 6238 αυθεντικοποίηση εφαρμογή εργάζεται — Google Authenticator, Microsoft Authenticator, Authy, Aegis, FreeOTP — γιατί υλοποίηση είναι τυπικό (SHA-1, 6 ψηφία, 30-δευτερόλεπτο βήμα). χωρίς ιδιοκτησίας διακομιστή συστατικό είναι εμπλεκόμενο.

Πώς λειτουργεί​

  • Τομέας. MFA ζει σε το AppUser aggregate (Πρόσβασης περιεχόμενο). Ένας χρήστης είναι εγγεγραμμένη μέσα δήλωση-αποκάλυψη μέθοδοι — BeginMfaEnrollment, ConfirmMfaEnrollment, ConsumeBackupCode, RegenerateBackupCodes, DisableMfa — έτσι αναλλοίωτα (α μυστικό πρέπει επιβεβαίωση πριν ενεργοποιεί. ένα ασφάλεια κωδικό είναι ενιαίο-χρήση) εξαναγκάζονται σε ένα μέρος.
  • TOTP. Δημιουργία και επαλήθευση κάθονται πίσω το Core ITotpAuthenticator διεπαφή, υλοποίηση σε Infrastructure με το Otp.NET βιβλιοθήκη. Επαλήθευση ανοχή ±1 χρόνο-βήμα του ρολόι αποκλίσεις.
  • Μυστικό στο ανάπαυση. Ο αυθεντικοποίηση μυστικό αποθηκεύεται κρυπτογραφημένα μέσα ISecretProtector (EncryptionPurposes.MfaSecret) — ποτέ σε plaintext.
  • Ασφάλεια κωδικοί. Δέκα ενιαίο-χρήση ανάκτηση κωδικοί εκδοθεί σε εγγραφή, δείχνει μία φορά, και αποθηκευμένο μόνο ως SHA-256 κατακερματίζει (MfaBackupCodes). Κάθε εργάζεται ακριβώς μία φορά. ένα ξοδευμένο κωδικό απορρίπτεται τη συνέχεια.

Ενεργοποίηση αυτό (προφίλ)​

Στο Λογαριασμό σελίδα (/account) το Δύο-παράγοντας τυλίγματος τμήμα δείχνει τη τρέχουσα κατάσταση:

  1. Ενεργοποιήστε δύο-παράγοντας ανοίγει ένα MudBlazor διάλογος με ένα QR κωδικό (αποδίδεται διακομιστή-πλευρά ως SVG μέσα Net.Codecrete.QrCodeGenerator) συν το χειροκίνητα ρύθμιση κλειδί.
  2. Σάρωση αυτό, εισάγετε 6-ψηφίο κωδικό για επιβεβαίωση — αυτό επαληθεύει το εκκρεμής μυστικό πριν ενεργοποιώντας.
  3. Ο διάλογος στη συνέχεια δείχνει το ασφάλεια κωδικοί. σώσετε τα. 2FA είναι τώρα σε.

Η ίδια ενότητα αφήνει ένα εγγεγραμμένη χρήστη αναδημιουργία ασφάλεια κωδικοί ή διακοπή 2FA — αμφότερα απαιτούν το λογαριασμό κωδικός πρόσβασης για επιβεβαίωση.

Υπογραφή σε με 2FA​

Σύνδεση είναι ένα δύο-βήμα ροή μόλις 2FA ενεργοποιηθεί:

  1. Κωδικός πρόσβασης βήμα (POST /api/auth/login). Σε επιτυχία το auth cookie είναι δεν εκδοθεί ακόμη. αντί ένα σύντομη-διαρκείας (5-λεπτό), κρυπτογραφημένα εκκρεμή cookie έχει ορίστε και ο χρήστης αποστέλλεται σε /login/2fa.
  2. Πρόκληση βήμα (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/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 (εγγραφή → επιβεβαίωση → κατανάλωση, κασκάδα διαγραφή) και MfaFlowTests.cs (πλήρης HTTP δύο-βήμα σύνδεση με TOTP + ασφάλεια κωδικό, και το υποχρεωτικό-εγγραφή πύλη).
  • E2E — E2ETests/MfaFlowTests.cs: ενεργοποίηση από το προφίλ (QR + επιβεβαίωση + ασφάλεια κωδικοί) και ολοκληρώστε α κατακρημνιστύ υπογραφή-σε, σε desktop και κινητό viewports.