Kako dodati dvostopenjsko overitev v svojo aplikacijo
Da dodate dvostopenjsko overitev (2FA) v aplikacijo, naj uporabniki povežejo overitveno aplikacijo tako, da skenirajo kodo QR, po geslu pa vnesejo šestmestno kodo, ki jo ta prikaže, in šele ko je ta koda pravilna, na strežniku ustvarite polno sejo. Vsakemu uporabniku ob vklopu dajte enkratne obnovitvene kode, omejite število kod, ki jih nekdo lahko ugane, in preden se 2FA lahko izklopi, zahtevajte geslo in trenutno kodo. Če uporabljate gostovanega ponudnika overitve, vklopite njegovo vgrajeno večfaktorsko možnost namesto da gradite lastno.
Ta vodnik obravnava izbire, natančen potek, pozive za vašega graditelja z UI in napake, zaradi katerih je 2FA videti prisoten, a ne naredi ničesar. Če je koncept nov, začnite s kaj je dvostopenjska overitev.
Preden začnete: potrebujete delujočo prijavo
2FA sedi na obstoječi prijavi. Najprej potrebujete eno od teh:
- Lastno prijavo, z uporabniki in zgoščenimi gesli, shranjenimi v bazi podatkov vaše aplikacije.
- Gostovanega ponudnika overitve, ki upravlja uporabnike namesto vas.
Če še nimate nobenega, začnite s kako dodati prijavo v svojo aplikacijo. Preostanek tega vodnika predpostavlja, da korak z geslom že deluje.
Izberite drugi faktor
| Metoda | Napor uporabnika | Varnost | Strošek delovanja | Dobra privzeta izbira? |
|---|---|---|---|---|
| Overitvena aplikacija (TOTP) | Enkrat skenirate kodo QR, ob prijavi vtipkate kodo | Dobra; izvabljivo, če lažna stran zahteva kodo | Brezplačno | Da, za večino aplikacij |
| Ključ za prijavo (passkey) ali varnostni ključ | Dotik ali uporaba prstnega odtisa | Najmočnejša; odporna na lažno predstavljanje | Brezplačno | Da, če so uporabniki zadovoljni z njim |
| Koda po e-pošti | Ob prijavi preverite nabiralnik | Enako močna kot e-poštni račun | Stroški pošiljanja e-pošte | Samo kot rezerva |
| Koda po SMS | Počakate na sporočilo | Najšibkejša; zamenjava SIM-kartice in lažno predstavljanje | Stroški na sporočilo | Samo če uporabniki ne morejo uporabljati aplikacije |
TOTP pomeni časovno enkratno geslo, standard (RFC 6238), ki ga uporabljajo overitvene aplikacije. Vaš strežnik in uporabnikov telefon delita skrivnost; vsak iz te skrivnosti in trenutnega časa ustvari enako kratko kodo, ki se ponavadi spremeni vsakih 30 sekund. Ni potrebna omrežna povezava ali ponudnik SMS.
Ključi za prijavo (passkeys) nadomeščajo ali dopolnjujejo gesla s kriptografskim ključem, shranjenim v uporabnikovi napravi. So močnejši, vendar jih je težje zgraditi samostojno, zato mnoge aplikacije začnejo s TOTP in ključe za prijavo dodajo pozneje ali jih dobijo pri ponudniku overitve.
Zgraditi ali vklopiti?
| Pristop | Prednosti | Slabosti |
|---|---|---|
| Večfaktorska možnost gostovanega ponudnika overitve | Manj kode; ponudnik vzdržuje varnostne podrobnosti | Mesečni strošek pri obsegu; odvisni ste od možnosti ponudnika |
| Lastni TOTP s knjižnico | Popoln nadzor; brez stroška na uporabnika | Robne primere imate sami: zaklepanje, obnovitev, shranjevanje skrivnosti |
Preverite trenutno dokumentacijo svojega ponudnika za to, katere faktorje podpira in v katerih paketih. Ne glede na izbiro nikoli ne pišite matematike za generiranje kode sami; uporabite splošno uporabljano knjižnico.
Najprej določite politiko
Preden pišete poziv, odgovorite na ta vprašanja, saj spremenijo zasnovo:
- Kdo mora uporabljati? Neobvezno za vse, obvezno za skrbnike in osebje ali obvezno za vse. Obvezno za vsakogar z skrbniškimi pooblastili je pogosto. Glejte nadzor dostopa na podlagi vlog.
- Kako pogosto uporabniki ponovno vnesejo kodo? Ob vsaki prijavi ali enkrat na napravo za 30 dni („zapomni si to napravo“).
- Katera dejanja potrebujejo svežo potrditev? Dobri kandidati so spreminjanje e-pošte, podatkov za izplačilo ali izklop 2FA. To se imenuje overitev za dodatno stopnjo (step-up).
- Kakšen je postopek ob izgubljenem telefonu? Obnovitvene kode in ročna rezerva, ki jo ste pripravljeni izvajati.
Korak za korakom: TOTP 2FA na lastni prijavi
1. Shranite prava polja
Vsak uporabnik potrebuje: ali je 2FA vklopljen, skrivnost TOTP (šifrirano v mirovanju, ne kot navadno besedilo), čas vklopa in seznam obnovitvenih kod, shranjenih zgoščeno, tako kot gesla. Dodajte mesto za štetje neuspelih poskusov.
2. Vpis
- Uporabnik odpre Nastavitve in klikne Vklopi dvostopenjsko overitev.
- Strežnik ustvari novo skrivnost in jo vrne kot kodo QR ter kot besedilo za ljudi, ki je ne morejo skenirati.
- Uporabnik jo skenira v overitveni aplikaciji in vtipka trenutno kodo.
- Strežnik preveri kodo. Šele če je pravilna, shrani skrivnost in označi 2FA kot vklopljen.
- Aplikacija enkrat prikaže 8–10 obnovitvenih kod in prosi uporabnika, naj jih shrani.
Korak 4 je pomemben: če vklopite 2FA, preden potrdite kodo, se zaklene vsakdo, čigar skeniranje ni uspelo.
3. Prijava z drugim korakom
- Uporabnik vnese e-pošto in geslo. Strežnik ju preveri.
- Če je 2FA vklopljen, strežnik ne ustvari polne seje. Namesto tega ustvari kratkotrajno stanje „drugi faktor čaka“.
- Aplikacija prikaže zaslon s kodo. Strežnik kodo preveri in pri tem dovoli majhno časovno okno zaradi odstopanja ure.
- Šele zdaj strežnik izda pravo sejo.
Vsaka zaščitena pot in končna točka API-ja mora zavrniti stanje „čaka“. Zaslon 2FA, ki samo skrije strani v brskalniku, se lahko preskoči s klicem API-ja neposredno.
4. Omejitve in opozorila
Šestmestna koda ima milijon kombinacij, zato jo je brez omejitev mogoče uganiti. Omejite poskuse, po ponovljenih napakah za nekaj časa zaklenite drugi korak in uporabniku pošljite e-pošto, ko se to zgodi. Glejte omejevanje hitrosti (rate limiting) in pošiljanje e-pošte iz aplikacije.
5. Obnovitev in izklop
- Obnovitvena koda deluje enkrat, nato se izbriše.
- Izklop 2FA zahteva geslo in trenutno kodo ali obnovitveno kodo.
- Ponovno ustvarjanje obnovitvenih kod razveljavi stari nabor.
- Uporabniku pošljite e-pošto vsakič, ko se 2FA vklopi ali izklopi.
Pozivi za vašega graditelja z UI
Začnite z osrednjim tokom:
Dodaj neobvezno dvostopenjsko overitev z overitvenimi aplikacijami (TOTP) k našemu obstoječemu prijavnemu sistemu z e-pošto in geslom. Uporabi dobro znano knjižnico TOTP, algoritma ne piši sam. V Nastavitvah prikaži kodo QR in besedilno skrivnost ter 2FA omogoči šele, ko uporabnik vnese veljavno kodo. Skrivnost shrani šifrirano in je po nastavitvi ne prikazuj več. Enkrat prikaži 10 enkratnih obnovitvenih kod in jih shrani zgoščene.
Nato uveljavljanje, kjer generirana koda najpogosteje odpove:
Uveljavi 2FA na strežniku. Po pravilnem geslu uporabniki z vklopljenim 2FA dobijo kratkotrajno stanje „čaka“, ne polne seje. Vsaka zaščitena stran in pot API-ja mora zavrniti stanje „čaka“. Omeji poskuse kode na 5, nato za 15 minut zakleni drugi korak in pošlji uporabniku e-pošto.
Nato pravilnik:
Zahtevaj 2FA za skrbniške račune: skrbnik brez 2FA je preusmerjen na nastavitev in ne more priti do nadzorne plošče, dokler je ni opravil. Za izklop 2FA ali spremembo e-poštnega naslova računa zahtevaj geslo in trenutno kodo. Ob vklopu ali izklopu 2FA pošlji uporabniku e-pošto.
Nazadnje od agenta zahtevajte razlago, kaj je zgradil:
Naštej vsako pot, ki preverja, ali je bil drugi faktor dokončan, kje sta shranjeni skrivnost TOTP in obnovitvene kode ter kako sta zaščiteni.
Pogoste napake
- Seja izdana po geslu. Najresnejša napaka. Če polna seja obstaja, preden je koda preverjena, je 2FA samo okrasek. Preizkusite tako, da po koraku z geslom pokličete zaščiten API.
- Brez omejitve poskusov. Neomejeno ugibanje naredi kodo podvrženo grobi sili.
- Skrivnosti ali obnovitvene kode v navadnem besedilu. Ob uhajanju baze podatkov so vsi drugi faktorji razkriti.
- Vklop pred preverjanjem. Uporabniki, ki so napačno skenirali, se ob naslednji prijavi zaklenejo.
- Ni poti za obnovitev. Vsak izgubljen telefon postane podporni zahtevek ali izgubljena stranka.
- Preprost izklop. Če ukraden seja lahko izklopi 2FA brez kode, zaščite ni več.
- Kode v dnevnikih. Poskrbite, da se kode in skrivnosti nikoli ne pojavijo v strežniških dnevnikih ali sporočilih o napakah.
- Preverjanje samo na strani za prijavo. Ponastavitev gesla, prijava s čarobno povezavo in vsaka družbena prijava morajo prav tako upoštevati 2FA, sicer postanejo obvoz.
Kontrolni seznam za testiranje
- Nastavitev se zaključi šele po veljavni kodi
- Prijava s pravilnim geslom, a brez kode, ne omogoči dostopa do nobene zaščitene strani ali API-ja
- Napačna koda je zavrnjena; ponovljene napačne kode sprožijo zaklepanje in e-pošto
- Koda izpred nekaj minut je zavrnjena
- Vsaka obnovitvena koda deluje natanko enkrat
- Izklop 2FA zahteva geslo in trenutno kodo
- Ponastavitev gesla ne obide 2FA
- Skrbniki brez 2FA ne morejo do skrbniških strani (če je zahtevano)
- Skrivnosti in obnovitvene kode so v bazi šifrirane ali zgoščene
- Nobena koda ali skrivnost se ne pojavi v dnevnikih
Pred zagonom opravite tudi celoten kontrolni seznam varnosti za aplikacije, zgrajene z UI.
Dodajanje 2FA v Mythexu
Mythex ne vključuje vgrajenega prijavnega sistema za končne uporabnike vaše aplikacije, zato je 2FA del tistega pristopa k overitvi, ki ga izberete: lastna prijava z e-pošto in geslom z bazo projekta ali gostovan ponudnik z večfaktorsko podporo. Opišete, kaj želite, v klepetu s pozivi, podobnimi zgornjim, ključi ponudnikov pa gredo v skrivnosti projekta (prek /secrets, nastavitev projekta ali kartice za skrivnosti, ki jo prikaže agent), ne v vnosno polje sporočila. Recept v dokumentaciji Dodajanje prijave v aplikacijo vsebuje začetni poziv, Varnost za aplikacije, ki jih gradite pa pokriva navade okoli ključev in dovoljenj. Ko agent konča, preizkusite vsako točko kontrolnega seznama v predogledu, preden objavite.
Vprašanja
Kako najlažje dodam dvostopenjsko overitev v aplikacijo?
Če uporabljate gostovanega ponudnika overitve, vklopite njegovo vgrajeno večfaktorsko možnost; to je ponavadi najmanj kode. Če upravljate lastno prijavo, dodajte kode iz overitvene aplikacije (TOTP) z dobro znano knjižnico, poleg njih pa obnovitvene kode in preverjanje na strežniku.
Ali naj za 2FA uporabljam kode po SMS?
SMS je boljši od nobenega drugega faktorja, vendar je najšibkejša pogosta možnost, saj je sporočila mogoče preusmeriti z zamenjavo SIM-kartice, kode pa je mogoče izvabiti z lažnim predstavljanjem. Za privzeto ponudite overitveno aplikacijo, ključe za prijavo (passkeys), če so vaši uporabniki pripravljeni nanje.
Ali za 2FA potrebujem bazo podatkov?
Če upravljate lastno prijavo, da. Skrivna vrednost 2FA vsakega uporabnika, ali je 2FA vklopljen, in njegove zgoščene obnovitvene kode morajo biti shranjene nekje, kjer lahko strežnik preveri. Gostovan ponudnik overitve to shrani namesto vas.
Kaj se zgodi, če uporabnik izgubi telefon?
Prijavi se lahko z eno od enkratnih obnovitvenih kod, ki ste mu jih prikazali, ko je vklopil 2FA, nato na novi napravi ponovno nastavi 2FA. Brez obnovitvenih kod potrebujete ročno preverjanje identitete, zato ta postopek določite pred zagonom.