Dvoufaktorová autentifikace – jak na to?
- potapnik
- Člen | 127
Zdravím,
snažím se vymyslet průběh dvoufaktorového ověření uživatelů. Nyní
mám standardní implementaci z Nette, kdy výsledkem funkce authenticate je
vrácená identita nebo vyhození výjimky. Potřeboval bych tedy vyřešit
„tu druhou“ část, ať už je to SMS kód nebo ověřovací appka
s 30 vteřinovým tokenem. Jenže když předám identitu, tak už je
uživatel považovaný za přihlášeného a ten druhý krok by tedy byl
k ničemu. Jak se tedy poprat s tím, že uživatele přihlásím až po tom
druhém ověření?
Předem díky.
- enumag
- Člen | 2118
Spíše bych identitu vůbec nevytvářel dokud neproběhne i druhá fáze.
Tzn. kód ověřování zda uživatel existuje a heslo je správné bych
z authenticatoru přesunul jinam. Pokud by údaje seděly tak bych jen uložil
poznámku do session. Po druhé fázi bych teprve vytvořil identitu a
přihlásil bych uživatele pomocí
Nette\Security\User::login($identity);
. Tzn. bych z procesu
úplně vypustil IAuthenticator.
EDIT nebo možná by authenticator mohl zůstat pro tu první fázi, ale použil bych jej přímo, bez Nette\Security\User. Identitu kterou by mi vrátil bych uložil do session (ještě ne do UserStorage) a po druhé fázi bych ji teprve předal třídě User.
Editoval enumag (7. 1. 2016 20:39)
- GEpic
- Člen | 566
Nevím, jestli by to tak bylo korektní, ale já jsem nad tímto také přemýšlel a já bych to řešil nejspíš takto:
V první fázi bych ověřil uživatele vlastní funkcí, která vrací pouze bool pokud jsou hodnoty správné nebo ne, pokud ano, pomocí jQuery bych formulář s první fází schoval a zobrazil druhý, přičemž bych měl stále přihlašovací údaje ale mohl bych odeslat potřebné věci v druhé fázi, tedy sms kod. Poté co by přišel SMS kod, bych teprve ověřil SMS kod a využil authenticate a následně login s redirectem…
Pouze má myšlenka, nemusí bejt vůbec správně, ale myslím, že tak by to mohlo fungovat.
Editoval GEpic (7. 1. 2016 20:47)
- HappyFace
- Člen | 162
GEpic napsal(a):
Nevím, jestli by to tak bylo korektní, ale já jsem nad tímto také přemýšlel a já bych to řešil nejspíš takto:
V první fázi bych ověřil uživatele vlastní funkcí, která vrací pouze bool pokud jsou hodnoty správné nebo ne, pokud ano, pomocí jQuery bych formulář s první fází schoval a zobrazil druhý, přičemž bych měl stále přihlašovací údaje ale mohl bych odeslat potřebné věci v druhé fázi, tedy sms kod. Poté co by přišel SMS kod, bych teprve ověřil SMS kod a využil authenticate a následně login s redirectem…
Pouze má myšlenka, nemusí bejt vůbec správně, ale myslím, že tak by to mohlo fungovat.
pekna myslienka ale aky je dovod si pamatat prihlasovacie udaje? .. ja by som to ponal ako prihlasovaci token.. v prvom kroku zadas meno a heslo. Po uspesnom overeni by sa ti vygeneroval kod, ktory by si poslal cez cokolvek a nasledne ked by si ho zadal tak by doslo k prihlaseniu na ucet, s ktorym by bol sparovani. ak by si to chcel riesit len na session tak by som si len pamatal ID uzivatela a kod .. aj tak po prihlaseni je z 99% potrebne z DB nacitat zvysne informacie o uzivatelovy