Vadovai

Kaip pridėti dviejų faktorių autentifikavimą į savo programėlę

Kad pridėtumėte dviejų faktorių autentifikavimą (2FA) į programėlę, leiskite vartotojams susieti autentifikatoriaus programėlę nuskaitant QR kodą, po slaptažodžio prašykite šešiaženklio kodo, kurį ji rodo, ir sukurkite visą sesiją serveryje tik tada, kai tas kodas teisingas. Kiekvienam vartotojui įjungdami suteikite vienkartinius atkūrimo kodus, apribokite, kiek kodų kas nors gali bandyti atspėti, ir reikalaukite slaptažodžio bei dabartinio kodo, kad 2FA būtų galima išjungti. Jei naudojate talpinamą autentifikavimo teikėją, įjunkite jo įmontuotą daugiafaktorinio autentifikavimo parinktį vietoj to, kad kurtumėte savo.

Šis vadovas aprašo pasirinkimus, tikslų srautą, raginimus, kuriuos galite duoti DI kūrimo įrankiui, ir klaidas, dėl kurių 2FA atrodo įjungtas, bet iš tikrųjų nieko nedaro. Jei ši sąvoka nauja, pradėkite nuo kas yra dviejų faktorių autentifikavimas.

Prieš pradedant: jums reikia veikiančio prisijungimo

2FA veikia ant jau esamo prisijungimo. Pirmiausia jums reikia vieno iš šių:

  • Savo prisijungimo, kurio vartotojai ir užšifruoti slaptažodžiai saugomi jūsų programėlės duomenų bazėje.
  • Talpinamo autentifikavimo teikėjo, kuris tvarko vartotojus už jus.

Jei dar neturite nė vieno, pradėkite nuo kaip pridėti prisijungimą prie programėlės. Likusioje dalyje laikoma, kad slaptažodžio žingsnis jau veikia.

Pasirinkite antrą faktorių

BūdasVartotojo pastangosSaugumasEksploatavimo kainaGeras numatytasis?
Autentifikatoriaus programėlė (TOTP)Vieną kartą nuskaitoma QR kodas, prisijungiant įvedamas kodasGeras; gali būti išviliotas, jei netikra svetainė prašo kodoNemokamaTaip, daugumai programėlių
Prieigos raktas ar saugumo raktasPalieskite ar naudokite pirštų atspaudąStipriausias; atsparus apgauleiNemokamaTaip, jei vartotojai jiems pritaria
El. pašto kodasPrisijungiant patikrinamas pašto dėžutėTik tiek stiprus, kiek el. pašto paskyraEl. laiškų siuntimo išlaidosTik kaip atsarginis
SMS kodasLaukiama žinutėsSilpniausias; SIM keitimas ir apgaulėMokestis už žinutęTik jei vartotojai negali naudoti programėlės

TOTP reiškia laiku pagrįstą vienkartinį slaptažodį – standartą (RFC 6238), kurį naudoja autentifikatoriaus programėlės. Jūsų serveris ir vartotojo telefonas dalijasi paslaptimi; abu iš tos paslapties ir dabartinio laiko generuoja tą patį trumpą kodą, paprastai keičiantį kas 30 sekundžių. Nereikia tinklo ryšio ar SMS teikėjo.

Prieigos raktai pakeičia ar papildo slaptažodžius kriptografiniu raktu, saugomu vartotojo įrenginyje. Jie stipresni, bet sudėtingiau sukurti patiems, todėl daugelis programėlių pradeda nuo TOTP ir vėliau prideda prieigos raktus arba jų gauna iš autentifikavimo teikėjo.

Kurti patiems ar įjungti?

BūdasPrivalumaiTrūkumai
Talpinamo autentifikavimo teikėjo MFAMažiau kodo; saugumo detales prižiūri teikėjasMėnesinė kaina, didėjant apimčiai; priklausote nuo teikėjo parinkčių
Savo TOTP su bibliotekaVisiška kontrolė; jokio mokesčio už vartotojąJums tenka kraštutiniai atvejai: blokavimai, atkūrimas, paslapčių saugojimas

Patikrinkite savo teikėjo dabartinę dokumentaciją, kokius faktorius jis palaiko ir kuriuose planuose. Bet kuriuo atveju niekada patys nerašykite kodo generavimo matematikos; naudokite plačiai paplitusią biblioteką.

Pirmiausia nustatykite politiką

Atsakykite į šiuos klausimus prieš raginant, nes jie keičia projektą:

  1. Kam tai privaloma? Neprivaloma visiems, privaloma administratoriams ir darbuotojams, ar privaloma visiems. Dažnai reikalaujama visiems, turintiems administratoriaus galių. Žr. vaidmenimis pagrįstas prieigos valdymas.
  2. Kaip dažnai vartotojai įveda kodą iš naujo? Kiekvieną prisijungimą arba kartą per 30 dienų kiekviename įrenginyje („prisiminti šį įrenginį“).
  3. Kuriems veiksmams reikalingas naujas patvirtinimas? El. pašto keitimas, išmokėjimo duomenys ar 2FA išjungimas – geri kandidatai. Tai vadinama žingsniuojamuoju autentifikavimu.
  4. Koks yra procesas, jei pamestas telefonas? Atkūrimo kodai ir rankinis atsarginis variantas, kurį esate pasirengę vykdyti.

Žingsnis po žingsnio: TOTP 2FA su savo prisijungimu

1. Saugokite teisingus laukus

Kiekvienam vartotojui reikia: ar 2FA įjungtas, TOTP paslapties (saugomos užšifruotos, ne paprastu tekstu), įjungimo laiko ir atkūrimo kodų sąrašo, saugomo užmaišytu pavidalu, kaip slaptažodžiai. Pridėkite vietą nesėkmingiems bandymams skaičiuoti.

2. Registracija

  1. Vartotojas atidaro Nustatymus ir spusteli Įjungti dviejų faktorių autentifikavimą.
  2. Serveris sugeneruoja naują paslaptį ir grąžina ją kaip QR kodą bei tekstinę versiją tiems, kurie negali nuskaityti.
  3. Vartotojas nuskaito ją autentifikatoriaus programėlėje ir įveda dabartinį kodą.
  4. Serveris patikrina kodą. Tik jei jis teisingas, paslaptis išsaugoma ir 2FA pažymimas kaip įjungtas.
  5. Programėlė vieną kartą parodo 8–10 atkūrimo kodų ir paprašo vartotojo juos išsaugoti.

Žingsnis 4 svarbus: 2FA įjungus prieš patvirtinant kodą, bet kas, kurio nuskaitymas nepavyko, bus užrakintas.

3. Prisijungimas su antru žingsniu

  1. Vartotojas pateikia el. paštą ir slaptažodį. Serveris juos patikrina.
  2. Jei 2FA įjungtas, serveris nekuria pilnos sesijos. Vietoj to sukuria trumpai galiojančią būseną „laukiama antro faktoriaus“.
  3. Programėlė rodo kodo ekraną. Serveris tikrina kodą, leisdamas nedidelį laiko nuokrypio langą.
  4. Tik dabar serveris išduoda tikrąją sesiją.

Kiekvienas apsaugotas maršrutas ir API galinis taškas turi atmesti laukiamą būseną. 2FA ekranas, kuris tik slepia puslapius naršyklėje, gali būti apeitas tiesiogiai kviečiant API.

4. Ribos ir įspėjimai

Šešiaženkliame kode yra milijonas kombinacijų, todėl be ribų jį įmanoma atspėti. Ribokite bandymus, po kelių nesėkmių užrakinkite antrą žingsnį laikotarpiui ir apie tai atsiųskite vartotojui el. laišką. Žr. kas yra greičio ribojimas ir kaip siųsti el. laiškus iš programėlės.

5. Atkūrimas ir išjungimas

  • Atkūrimo kodas veikia vieną kartą, po to ištrinamas.
  • 2FA išjungimas reikalauja slaptažodžio ir dabartinio kodo ar atkūrimo kodo.
  • Atkūrimo kodų generavimas iš naujo panaikina senąjį rinkinį.
  • Kiekvieną kartą įjungus ar išjungus 2FA, siųskite vartotojui el. laišką.

Raginimai jūsų DI kūrimo įrankiui

Pradėkite nuo pagrindinio srauto:

Pridėk pasirenkamą dviejų faktorių autentifikavimą naudojant autentifikatoriaus programėles (TOTP) prie esamo el. pašto ir slaptažodžio prisijungimo. Naudok gerai žinomą TOTP biblioteką, nerašyk algoritmo pats. Nustatymuose rodyk QR kodą ir tekstinę paslaptį, o 2FA įjunk tik tada, kai vartotojas įveda teisingą kodą. Paslaptį saugok užšifruotą ir po nustatymo niekada daugiau nerodyk. Parodyk 10 vienkartinių atkūrimo kodų vieną kartą ir saugok juos užmaišytus.

Tada įgyvendinimas serveryje – čia DI sugeneruotas kodas dažniausiai nepasiekia tikslo:

Įgyvendink 2FA serveryje. Po teisingo slaptažodžio vartotojai su įjungtu 2FA gauna trumpai galiojančią laukiamą būseną, o ne pilną sesiją. Kiekvienas apsaugotas puslapis ir API maršrutas turi atmesti laukiamą būseną. Riboki kodo bandymus iki 5, tada 15 minučių užrakink antrą žingsnį ir atsiųsk vartotojui el. laišką.

Po to politika:

Reikalauk 2FA administratorių paskyroms: administratorius be 2FA nukreipiamas į nustatymus ir negali pasiekti skydelio, kol jo neįjungs. Reikalauk slaptažodžio ir dabartinio kodo, kad 2FA būtų išjungtas arba pakeistas paskyros el. paštas. Kai 2FA įjungiamas ar išjungiamas, siųsk vartotojui el. laišką.

Galiausiai paprašykite agento paaiškinti, ką sukūrė:

Išvardyk kiekvieną maršrutą, kuris tikrina, ar užbaigtas antras faktorius, nurodyk, kur saugomos TOTP paslaptis ir atkūrimo kodai, ir kaip jie apsaugoti.

Dažniausios klaidos

  • Sesija išduodama po slaptažodžio. Pats rimčiausias klaidos tipas. Jei pilna sesija egzistuoja prieš tikrinant kodą, 2FA yra tik dekoracija. Išbandykite kviesdami apsaugotą API tik po slaptažodžio žingsnio.
  • Nėra bandymų ribos. Neribotas spėjimų skaičius daro kodą įmanomą atspėti bandant visas kombinacijas.
  • Paslaptys ar atkūrimo kodai paprastu tekstu. Duomenų bazės nutekėjimas tada atiduoda kiekvieno antrą faktorių.
  • Įjungimas prieš patvirtinimą. Vartotojai, kurie neteisingai nuskaitė, bus užrakinti kitą kartą prisijungiant.
  • Nėra atkūrimo kelio. Kiekvienas pamestas telefonas tampa pagalbos prašymu ar prarastu klientu.
  • Lengvas išjungimas. Jei pavogta sesija gali išjungti 2FA be kodo, apsauga dingsta.
  • Kodai žurnaluose. Įsitikinkite, kad kodai ir paslaptys niekada nepasirodo serverio žurnaluose ar klaidų pranešimuose.
  • Tikrinimas tik prisijungimo puslapyje. Slaptažodžio atstatymas, „magic link“ prisijungimas ir bet koks socialinis prisijungimas taip pat turi paisyti 2FA, kitaip jie taps būdu jį apeiti.

Testavimo kontrolinis sąrašas

  • Registracija užbaigiama tik po teisingo kodo
  • Prisijungimas teisingu slaptažodžiu, bet be kodo, nesuteikia prieigos prie jokio apsaugoto puslapio ar API
  • Neteisingas kodas atmetamas; pakartotinai neteisingi kodai sukelia užrakinimą ir el. laišką
  • Kodas iš kelių minučių senumo atmetamas
  • Kiekvienas atkūrimo kodas veikia tik vieną kartą
  • 2FA išjungimas reikalauja slaptažodžio ir dabartinio kodo
  • Slaptažodžio atstatymas neapeina 2FA
  • Administratoriai be 2FA negali pasiekti administravimo puslapių (jei privaloma)
  • Paslaptys ir atkūrimo kodai duomenų bazėje užšifruoti arba užmaišyti
  • Jokie kodai ar paslaptys nepasirodo žurnaluose

Prieš paleidimą taip pat įvykdykite visą saugumo kontrolinį sąrašą DI kuriamoms programėlėms.

2FA pridėjimas Mythex

Mythex neturi įmontuotos prisijungimo sistemos jūsų programėlės galutiniams vartotojams, todėl 2FA yra pasirinkto autentifikavimo būdo dalis: arba jūsų pačių el. paštu ir slaptažodžiu su projekto duomenų baze, arba talpinamas teikėjas su daugiafaktoriu palaikymu. Aprašykite, ko norite, pokalbyje naudodami panašius į aukščiau pateiktus raginimus, o teikėjų raktai eina į projekto paslaptis (per /secrets, projekto nustatymus ar paslapčių kortelę, kurią agentas parodo), o ne į žinučių lauką. Dokumentacijos receptas Pridėti prisijungimą prie programėlės turi pradinį raginimą, o Saugumas programėlėms, kurias kuriate aprašo įpročius, susijusius su raktais ir leidimais. Kai agentas baigs, prieš publikuodami Peržiūroje patikrinkite kiekvieną kontrolinio sąrašo punktą.

Klausimai

Koks lengviausias būdas pridėti dviejų faktorių autentifikavimą į programėlę?

Jei naudojate talpinamą autentifikavimo teikėją, įjunkite jo įmontuotą daugiafaktorinio autentifikavimo parinktį – tai paprastai reikalauja mažiausiai kodo. Jei veikiate su savo prisijungimu, pridėkite autentifikatoriaus programėlės kodus (TOTP) su gerai žinoma biblioteka, taip pat atkūrimo kodus ir serverio pusės patikrą.

Ar 2FA turėčiau naudoti SMS kodus?

SMS yra geriau nei jokio antro faktoriaus, bet tai silpniausias įprastas variantas, nes žinutes galima nukreipti keičiant SIM kortelę, o kodus galima išviliotis apgaule. Kaip numatytąjį pasiūlykite autentifikatoriaus programėlę, o prieigos raktus – jei jūsų vartotojai jiems pasiruošę.

Ar 2FA pridėjimui man reikia duomenų bazės?

Jei veikiate su savo prisijungimu – taip. Kiekvieno vartotojo 2FA paslaptis, ar 2FA įjungtas ir jų užšifruoti atkūrimo kodai turi būti saugomi vietoje, kurią jūsų serveris gali patikrinti. Talpinamas autentifikavimo teikėjas tai saugo už jus.

Kas nutinka, jei vartotojas pameta telefoną?

Jie prisijungia vienu iš vienkartinių atkūrimo kodų, kuriuos jiems parodėte įjungdami 2FA, tada 2FA nustato iš naujo naujame įrenginyje. Be atkūrimo kodų reikia rankinio tapatybės patikrinimo, todėl šį procesą nustatykite prieš paleidimą.

Mythex · Pricing · Kurkite bet ką su dirbtiniu intelektu · Svetainių ir programėlių šablonai · Mythex palyginimas · Programėlių kūrimo su dirbtiniu intelektu žodynėlis · Nemokami programėlių kūrimo su dirbtiniu intelektu įrankiai · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)