Flerfaktorautentisering (MFA)
Forbedre sikkerheten ved å aktivere og konfigurere flerfaktorautentisering for Firebase-brukerne Deres
Flerfaktorautentisering (MFA) er en gratis leksjon i Apper med Firebase Auth og Realtime Database på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Apper med Firebase Auth og Realtime Database, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Apper med Firebase Auth og Realtime Database inneholder totalt 4 leksjoner.
Sikre appen med MFA
Flerfaktorautentisering (MFA) gir brukerkontoer et ekstra sikkerhetslag. I stedet for bare et passord trenger brukerne en ekstra «faktor» for å bevise identiteten sin.
Dette reduserer risikoen for uautorisert tilgang betydelig, selv om et passord blir stjålet.
Oversikt over Firebase MFA
Firebase Authentication har innebygd støtte for MFA. Det lar brukere registrere flere ekstra faktorer, for eksempel et telefonnummer for SMS-bekreftelse.
Når MFA er aktivert, logger brukerne først inn med den primære metoden sin (for eksempel e-post/passord), og fullfører deretter en utfordring med en av de registrerte ekstra faktorene.
Forutsetninger for MFA
For å aktivere MFA for en bruker må vedkommende først være logget inn i appen Deres. Firebase MFA fungerer ved å knytte flere faktorer til en eksisterende brukerkonto.
- Brukeren må være logget inn.
- Firebase SDK må være initialisert.
- De skal veilede brukeren gjennom registreringen av en ekstra faktor.
Legge til en telefonfaktor
En vanlig ekstra faktor er et telefonnummer som bekreftes via SMS. Prosessen innebærer:
- Å sende en bekreftelseskode til brukerens telefon.
- At brukeren skriver inn koden i appen Deres.
- At Firebase bekrefter koden og knytter telefonnummeret til brukerens konto.
Starte telefonregistrering
Slik starter De sendingen av en SMS-bekreftelseskode til brukerens telefonnummer som en MFA-faktor. Husk å erstatte +16505551234 med brukerens faktiske telefonnummer.
import com.google.firebase.auth.*;
import com.google.firebase.FirebaseApp;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
// Assume FirebaseApp is initialized and a user is signed in.
// FirebaseAuth auth = FirebaseAuth.getInstance();
// FirebaseUser user = auth.getCurrentUser(); // Must be non-null
System.out.println("Simulating MFA phone enrollment initiation:");
// Example PhoneAuthOptions (actual implementation requires Activity context)
PhoneAuthOptions options = PhoneAuthOptions.newBuilder(FirebaseAuth.getInstance())
.setPhoneNumber("+16505551234") // User's phone number
.setTimeout(60L, TimeUnit.SECONDS)
.setActivity(null) // Use 'this' for Activity context on Android
.setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override public void onVerificationCompleted(PhoneAuthCredential credential) { /* auto-verified */ }
@Override public void onVerificationFailed(FirebaseException e) { System.err.println("Failed: " + e.getMessage()); }
@Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) {
System.out.println("Code sent. Store verificationId: " + verificationId);
// Prompt user for SMS code here.
}
}).build();
// In a real app: PhoneAuthProvider.verifyPhoneNumber(options);
System.out.println("SMS verification initiated (simulated).");
}
}Bekrefte og fullføre registreringen
Når brukeren har mottatt SMS-koden og skrevet den inn, bruker De verificationId (fra forrige trinn) og koden til å opprette en PhoneAuthCredential, og registrerer den deretter som en MFA-faktor.
import com.google.firebase.auth.*;
public class Main {
public static void main(String[] args) {
// Assume FirebaseApp is initialized and a user is signed in.
// FirebaseAuth auth = FirebaseAuth.getInstance();
// FirebaseUser user = auth.getCurrentUser(); // Must be non-null
String verificationId = "YOUR_VERIFICATION_ID"; // From onCodeSent callback
String smsCode = "123456"; // User's input
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, smsCode);
// Enroll the credential as an MFA factor
// user.multiFactor.enroll(credential)
// .addOnCompleteListener(task -> {
// if (task.isSuccessful()) {
// System.out.println("MFA factor enrolled successfully!");
// } else {
// System.err.println("MFA factor enrollment failed: " + task.getException().getMessage());
// }
// });
System.out.println("MFA enrollment code demonstrated. Actual enrollment is async.");
}
}Autentisering med MFA
Når en bruker med aktivert MFA prøver å logge inn, kan den første innloggingen (for eksempel med e-post og passord) returnere en MultiFactorResolver. Denne resolver-en inneholder informasjon om de tilgjengelige ekstra faktorene.
Deretter ber appen Deres brukeren velge og bekrefte en av faktorene vedkommende har registrert.
Svare på MFA-utfordringen
Etter en primær innlogging får De en MultiFactorResolver hvis MFA kreves. Deretter bruker De denne til å fullføre innloggingen med en ekstra faktor, for eksempel en SMS-kode til telefonen.
import com.google.firebase.auth.*;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Assume FirebaseApp is initialized.
// FirebaseAuth auth = FirebaseAuth.getInstance();
// --- Scenario: After an initial sign-in attempt (e.g., email/password)
// --- that requires MFA, you would receive a MultiFactorResolver.
// --- This is a simplified demo.
System.out.println("Simulating MFA sign-in challenge response:");
// MultiFactorResolver resolver = ... (obtained from initial sign-in result)
// For demonstration, let's mock a resolver context.
// In a real app, you'd get this from a FirebaseAuthException.
// Example of how you'd get enrolled factors from a resolver
// List<MultiFactorInfo> factors = resolver.getFactors();
// if (!factors.isEmpty()) {
// MultiFactorInfo selectedFactor = factors.get(0); // Choose one, e.g., phone
// if (selectedFactor.getFactorId().equals(PhoneMultiFactorGenerator.FACTOR_ID)) {
// // Initiate SMS verification for this factor
// // Then, get the SMS code from the user
// // String smsCode = "123456";
// // PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, smsCode);
// // MultiFactorAssertion assertion = PhoneMultiFactorGenerator.getAssertion(credential);
//
// // auth.signInWithMultiFactorCredential(resolver.resolveSignIn(assertion))
// // .addOnCompleteListener(task -> {
// // if (task.isSuccessful()) {
// // System.out.println("Signed in successfully with MFA!");
// // } else {
// // System.err.println("MFA sign-in failed: " + task.getException().getMessage());
// // }
// // });
// }
// }
System.out.println("MFA sign-in challenge response simulated. See comments.");
}
}Vise og fjerne registrerte faktorer
Brukere kan administrere de registrerte MFA-faktorene sine. Dette omfatter å vise en liste over faktorer de har lagt til, og å fjerne faktorer de ikke lenger ønsker å bruke.
Dette er viktig for brukerens kontroll og sikkerhet, og gjør det mulig å tilbakekalle tilgang for mistede enheter.
import com.google.firebase.auth.*;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Assume FirebaseApp is initialized and a user is signed in.
// FirebaseAuth auth = FirebaseAuth.getInstance();
// FirebaseUser user = auth.getCurrentUser(); // Must be non-null
if (user != null) {
System.out.println("Managing MFA factors for user: " + user.getUid());
// Get enrolled factors
List<MultiFactorInfo> enrolledFactors = user.getMultiFactor().getEnrolledFactors();
System.out.println("\nEnrolled factors:");
if (enrolledFactors.isEmpty()) {
System.out.println(" No MFA factors enrolled.");
} else {
for (MultiFactorInfo factor : enrolledFactors) {
System.out.println(" - Factor ID: " + factor.getFactorId() + ", Display Name: " + factor.getDisplayName());
// Example: unenroll the first factor
// user.getMultiFactor().unenroll(factor)
// .addOnCompleteListener(task -> {
// if (task.isSuccessful()) {
// System.out.println("Factor unenrolled successfully: " + factor.getFactorId());
// } else {
// System.err.println("Failed to unenroll: " + task.getException().getMessage());
// }
// });
}
}
} else {
System.out.println("No user signed in to manage MFA factors.");
}
}
}MFA-sjekk
Hvilket av følgende er IKKE et vanlig trinn når en bruker med aktivert MFA logger inn i en Firebase-applikasjon?
MFA: sterkere sikkerhet
I denne leksjonen har De lært hvordan De kan styrke sikkerheten i applikasjonen Deres ved å implementere Firebase Multi-Factor Authentication (MFA).
- Vi gikk gjennom registrering av nye MFA-faktorer, spesielt telefonnumre.
- Vi undersøkte hvordan MFA-utfordringen håndteres under brukerinnlogging.
- De så også hvordan brukere kan administrere de registrerte faktorene sine.
MFA er et effektivt verktøy for å beskytte brukerkontoer mot uautorisert tilgang.
Lær deg Apper med Firebase Auth og Realtime Database med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 11
- Leksjoner
- 44
Ofte stilte spørsmål
Er leksjonen «Flerfaktorautentisering (MFA)» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Apper med Firebase Auth og Realtime Database, inkludert «Flerfaktorautentisering (MFA)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Apper med Firebase Auth og Realtime Database inneholder totalt 4 leksjoner.
Hva lærer jeg i «Flerfaktorautentisering (MFA)»?
Forbedre sikkerheten ved å aktivere og konfigurere flerfaktorautentisering for Firebase-brukerne Deres Du øver på Apper med Firebase Auth og Realtime Database med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Apper med Firebase Auth og Realtime Database?
Ingen tidligere erfaring er nødvendig. Apper med Firebase Auth og Realtime Database på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Flerfaktorautentisering (MFA)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Apper med Firebase Auth og Realtime Database-leksjonen?
Ja. Alle Apper med Firebase Auth og Realtime Database-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Autentisering med telefonnummer
- Flerfaktorautentisering (MFA)
- Tilpassede claims og sikkerhetsregler
- Kobling av kontoer og leverandøradministrasjon