Så lägger du till tvåfaktorsautentisering i din app
För att lägga till tvåfaktorsautentisering (2FA) i din app låter du användarna koppla en autentiseringsapp genom att skanna en QR-kod, ber dem ange den sexsiffriga kod den visar efter lösenordet och skapar först en full session på servern när den koden stämmer. Ge varje användare engångsåterställningskoder när de slår på funktionen, begränsa hur många koder någon kan gissa, och kräv lösenordet plus en aktuell kod innan 2FA kan stängas av. Om du använder en hostad autentiseringsleverantör slår du på dess inbyggda flerfaktoralternativ i stället för att bygga ditt eget.
Den här guiden går igenom valen, exakt flöde, prompter du kan ge en AI-byggare och misstagen som gör att 2FA ser ut att finnas men inte gör något. Om begreppet är nytt, börja med vad tvåfaktorsautentisering är.
Innan du börjar: du behöver en fungerande inloggning
2FA ligger ovanpå en befintlig inloggning. Du behöver något av följande först:
- Din egen inloggning, med användare och hashade lösenord lagrade i din apps databas.
- En hostad autentiseringsleverantör som hanterar användare åt dig.
Om du inte har något av dem än, börja med så lägger du till inloggning i din app. Resten av guiden förutsätter att ett lösenordssteg redan fungerar.
Välj din andra faktor
| Metod | Insats för användaren | Säkerhet | Kostnad att köra | Bra standard? |
|---|---|---|---|---|
| Autentiseringsapp (TOTP) | Skanna en QR-kod en gång, skriv en kod vid inloggning | Bra; kan nätfiskas om en falsk sida frågar efter koden | Gratis | Ja, för de flesta appar |
| Passkey eller säkerhetsnyckel | Tryck eller använd fingeravtryck | Starkast; motstår nätfiske | Gratis | Ja, om dina användare är bekväma med det |
| E-postkod | Kolla inkorgen vid inloggning | Lika stark som e-postkontot | Kostnader för e-postutskick | Endast som reserv |
| SMS-kod | Vänta på ett sms | Svagast; SIM-kortsbyte och nätfiske | Avgift per meddelande | Endast om användarna inte kan använda en app |
TOTP står för time-based one-time password, den standard (RFC 6238) som autentiseringsappar använder. Din server och användarens telefon delar en hemlighet; båda skapar samma korta kod utifrån hemligheten och aktuell tid, och koden byts oftast var 30:e sekund. Ingen nätverksanslutning eller SMS-leverantör behövs.
Passkeys ersätter eller kompletterar lösenord med en kryptografisk nyckel som lagras på användarens enhet. De är starkare men mer arbete att bygga själv, så många appar börjar med TOTP och lägger till passkeys senare, eller hämtar dem från en autentiseringsleverantör.
Bygga själv eller slå på?
| Metod | Fördelar | Nackdelar |
|---|---|---|
| Hostad autentiseringsleverantörs MFA | Mindre kod; leverantören underhåller säkerhetsdetaljerna | Månadskostnad i skala; du är beroende av leverantörens alternativ |
| Egen TOTP med ett bibliotek | Full kontroll; ingen avgift per användare | Du äger gränsfallen: låsningar, återställning, lagring av hemligheter |
Kontrollera din leverantörs aktuella dokumentation för vilka faktorer den stöder och på vilka planer. Hur som helst: skriv aldrig matematiken för kodgenerering själv; använd ett allmänt använt bibliotek.
Bestäm policyn först
Svara på dessa innan du skriver en prompt, eftersom de påverkar designen:
- Vem måste använda den? Valfritt för alla, obligatoriskt för admin och personal, eller obligatoriskt för alla. Att kräva det för alla med adminbehörighet är vanligt. Se rollbaserad åtkomstkontroll.
- Hur ofta anger användare en kod igen? Vid varje inloggning, eller en gång per enhet i 30 dagar ("kom ihåg den här enheten").
- Vilka åtgärder kräver en ny kontroll? Att ändra e-post, utbetalningsuppgifter eller stänga av 2FA är bra kandidater. Detta kallas step-up-autentisering.
- Vad är processen vid förlorad telefon? Återställningskoder, plus en manuell reservlösning som du är beredd att köra.
Steg för steg: TOTP-2FA på din egen inloggning
1. Lagra rätt fält
Varje användare behöver: om 2FA är aktiverat, TOTP-hemligheten (krypterad i vila, inte i klartext), tidpunkten då den aktiverades och en lista med återställningskoder lagrade hashade, precis som lösenord. Lägg till en plats för att räkna misslyckade försök.
2. Registrering
- Användaren öppnar Inställningar och klickar på Slå på tvåfaktorsautentisering.
- Servern genererar en ny hemlighet och returnerar den som QR-kod, plus textversionen för personer som inte kan skanna.
- Användaren skannar den i en autentiseringsapp och skriver in den aktuella koden.
- Servern kontrollerar koden. Endast om den är korrekt sparar den hemligheten och markerar 2FA som aktiverat.
- Appen visar 8–10 återställningskoder en gång och ber användaren spara dem.
Steg 4 är viktigt: att slå på 2FA före bekräftad kod låser ute alla vars skanning misslyckades.
3. Inloggning med ett andra steg
- Användaren skickar e-post och lösenord. Servern kontrollerar dem.
- Om 2FA är aktiverat skapar servern inte en full session. I stället skapar den ett kortlivat tillstånd "andra faktor väntar".
- Appen visar kodskärmen. Servern kontrollerar koden och tillåter ett litet tidsfönster för klockavvikelse.
- Först nu utfärdar servern den riktiga sessionen.
Varje skyddad rutt och API-endpoint måste avvisa väntande-tillståndet. En 2FA-skärm som bara döljer sidor i webbläsaren kan kringgås genom att anropa API:et direkt.
4. Gränser och larm
En sexsiffrig kod har en miljon kombinationer, vilket går att gissa utan gränser. Begränsa antalet försök, lås det andra steget en period efter upprepade misslyckanden och skicka ett mejl till användaren när det händer. Se hastighetsbegränsning och skicka e-post från din app.
5. Återställning och avstängning
- En återställningskod fungerar en gång och raderas sedan.
- Att stänga av 2FA kräver lösenordet och en aktuell kod eller återställningskod.
- Att generera nya återställningskoder ogiltigförklarar den gamla uppsättningen.
- Skicka ett mejl till användaren när 2FA slås på eller av.
Prompter till din AI-byggare
Börja med kärnflödet:
Lägg till valfri tvåfaktorsautentisering med autentiseringsappar (TOTP) till vår befintliga inloggning med e-post och lösenord. Använd ett välkänt TOTP-bibliotek, skriv inte algoritmen själv. I Inställningar visar du en QR-kod och den textuella hemligheten, och aktiverar 2FA först när användaren har angett en giltig kod. Lagra hemligheten krypterad och visa den aldrig igen efter installationen. Visa 10 engångsåterställningskoder en gång och lagra dem hashade.
Sedan tillämpningen, där genererad kod oftast brister:
Tillämpa 2FA på servern. Efter ett korrekt lösenord får användare med 2FA aktiverat ett kortlivat väntande tillstånd, inte en full session. Varje skyddad sida och API-rutt måste avvisa väntande tillstånd. Begränsa kodförsök till 5, lås sedan det andra steget i 15 minuter och skicka ett mejl till användaren.
Sedan policy:
Kräv 2FA för adminkonton: en admin utan 2FA skickas till inställningen och kan inte nå instrumentpanelen förrän den är klar. Kräv lösenordet och en aktuell kod för att stänga av 2FA eller ändra kontots e-post. Skicka ett mejl till användaren när 2FA slås på eller av.
Slutligen, be agenten förklara vad den byggt:
Lista varje rutt som kontrollerar att en andra faktor har slutförts, var TOTP-hemligheten och återställningskoderna lagras och hur de skyddas.
Vanliga misstag
- Session utfärdad efter lösenordet. Det allvarligaste felet. Om den fulla sessionen finns innan koden kontrolleras är 2FA bara dekoration. Testa genom att anropa ett skyddat API efter bara lösenordssteget.
- Ingen gräns för försök. Obegränsade gissningar gör koden möjlig att knäcka med brute force.
- Hemligheter eller återställningskoder i klartext. Ett databasläckage ger då bort allas andra faktor.
- Aktivera före verifiering. Användare som skannade fel låses ute vid nästa inloggning.
- Ingen återställningsväg. Varje förlorad telefon blir ett supportärende eller en förlorad kund.
- Enkel avstängning. Om en stulen session kan stänga av 2FA utan kod är skyddet borta.
- Koder i loggar. Se till att koder och hemligheter aldrig syns i serverloggar eller felmeddelanden.
- Kontroll enbart på inloggningssidan. Lösenordsåterställning, "magisk länk"-inloggning och all social inloggning måste också respektera 2FA, annars blir de ett sätt att kringgå den.
Testchecklista
- Registreringen slutförs först efter en giltig kod
- Inloggning med rätt lösenord men utan kod ger ingen åtkomst till någon skyddad sida eller något API
- En fel kod avvisas; upprepade fel koder utlöser låsningen och ett mejl
- En kod från några minuter sedan avvisas
- Varje återställningskod fungerar exakt en gång
- Att stänga av 2FA kräver lösenordet och en aktuell kod
- Lösenordsåterställning kringgår inte 2FA
- Admin utan 2FA kommer inte åt adminsidor (om det krävs)
- Hemligheter och återställningskoder är krypterade eller hashade i databasen
- Inga koder eller hemligheter syns i loggar
Kör också hela säkerhetschecklistan för AI-byggda appar före lansering.
Lägga till 2FA i Mythex
Mythex inkluderar inget inbyggt inloggningssystem för din apps slutanvändare, så 2FA ingår i den autentiseringslösning du väljer: din egen inloggning med e-post och lösenord som använder projektets databas, eller en hostad leverantör med flerfaktorstöd. Du beskriver vad du vill i chatten med prompter som de ovan, och eventuella leverantörsnycklar läggs i projekthemligheter (via /secrets, projektinställningarna eller hemlighetskortet som agenten visar) i stället för i meddelanderutan. Dokumentationsreceptet Lägg till inloggning i din app har en startprompt, och Säkerhet för appar du bygger täcker vanorna kring nycklar och behörigheter. När agenten är klar testar du varje punkt på checklistan i förhandsgranskningen innan du publicerar.
Frågor
Vad är det enklaste sättet att lägga till tvåfaktorsautentisering i en app?
Om du använder en hostad autentiseringsleverantör slår du på dess inbyggda flerfaktoralternativ; det kräver oftast minst kod. Om du kör din egen inloggning lägger du till koder från autentiseringsappen (TOTP) med ett välkänt bibliotek, plus återställningskoder och en kontroll på servern.
Ska jag använda SMS-koder för 2FA?
SMS är bättre än ingen andra faktor, men det är det svagaste vanliga alternativet eftersom sms kan omdirigeras genom SIM-kortsbyte och koder kan nätfiskas. Erbjud en autentiseringsapp som standard, och passkeys om dina användare är redo för dem.
Behöver jag en databas för att lägga till 2FA?
Om du kör din egen inloggning, ja. Varje användares 2FA-hemlighet, om 2FA är påslaget och deras hashade återställningskoder måste lagras någonstans som din server kan kontrollera. En hostad autentiseringsleverantör lagrar detta åt dig.
Vad händer om en användare tappar sin telefon?
De loggar in med en av de engångsåterställningskoder du visade när de slog på 2FA, och konfigurerar sedan 2FA igen på en ny enhet. Utan återställningskoder behövs en manuell identitetskontroll, så bestäm den processen före lansering.