Identificare unica a unui computer dintr-o aplicatie web

Din ce am cautat pe net, nu exista o varianta prin care sa identific unic un anumit utilizator.
Am citit despre computer fingerprint, MAC-ul calculatorului, CPU Serial Number dar nu cred ca rezolva problema mea.
A avut cineva nevoie pana acum de vreo solutie prin care sa permita conectarea in aplicatia Web a unui utilizator doar de pe un anumit dispozitiv fizic?
Clientul doreste o masura in plus de securitate in ceea ce priveste conectarea in aplicatie (considera ca parolele pot fi transmise prin viu grai).

1 Like

cu certificat nu merge? ce drepturi are acel user pe PC?

2FA nu este suficient?

Eventual 2FA și verificare via email când se schimbă IP.

Mai departe de OS, rezoluție, browser și IP nu cred că poți ajunge.

1 Like

Ai putea incerca o combinatie a elmentelor prezentate aici, dar nu cred ca e ceva reliable. Mai degraba iti indemni clientul sa fie mai putin paranoic si sa implementezi 2FA, cum a mentionat @iamntz.

1 Like

Sau daca vrei sa fii mai paranoic 2FA cu token fizic cum au bancile. Nu ai tokenul fizic nu te poti loga. Iar in aplicatie faci sa fie o singura sesiune activa (Cand se intra cu login in, invalideaza alte sesiune active pe acelasi cont)

3 Likes

Aici sunt enumerate câteva metode și unelte folosite pentru a identifica un user, https://youtu.be/vEEwWcNZCx0

Cel mai simplu ceri un certificat privat pentru logare. (un fisier pe care si-l seteaza omul in browser)
Altfel two factor authentication cu JWT si SMS/email/aplicatie telefon sunt optiuni foarte sigure.

Poti limita accesul si pe IP-uri cu VPN-uri private, dar e overkill.

@isti37, @Valentin_Valeanu, amandoi ati zis de ceva certificat. Puteti detalia sau sa ma indrumati spre alte resurse de unde ma pot informa?
@victorelu, e un client din Asia, are o oarecare doza de paranoia. Plus ca din punct de vedere tehnic nu prea intelege ca o aplicatie Web nu e ca una desktop care sa fie valabila doar pentru un anumit HDD/dispozitiv fizic.
@iamntz, 2FA = time based one time password? Adica ma loghez cu username/parola si apoi trebuie sa introduc si un cod (generat cu Google Authenticator de exemplu) ?

Sau daca are cineva un tutorial misto despre 2FA, v-as ruga sa faceti share :slight_smile:

Eu as gandi cam asa

  • aplicatia ta genereaza un cod pe care il trimiti prin sms user-ului. Tu, de asemenea salvezi acest cod ca sa ai cu ce sa compari

  • user-ul introduce acel cod din sms in aplicatie si tu il compari cu ce ai salvat. Daca ceea ce a introdus este egal cu ceea ce ai salvart tu, atunci ii permiti accesul in aplicatie

Ceea ce este mai sus este intr-o forma primitiva, dar o poti imbunatatii [1]

Pt trimiterea de sms-uri poti folosi api-uri precum Twilio

O chestie mai buna
Cica Google Authentificator poate sa se ocupe de generarea acelui cod. Vad ca il poti integra cu alte aplicatii. In ce este facuta aplicatia ?


  1. Cu toate minunile de mai sus :slight_smile:

Da, stiu de Google Authenticator, asta l-am si intrebat pe Ionut mai sus. Gratis e mereu mai ieftin :))
E o platforma numita Pentaho. Cred ca in spate are Apache + Tomcat + Spring dar n-as sti sa-ti zic sigur. Eu trebuie sa integrez metoda asta de securitate pana facem migrarea (in curs de dezvoltare) la propria noastra platforma unde o sa am acces la cod mai usor decat in acest Pentaho.
…Dar sa vad ce zic si baietii, poate exista o varianta mai simpla. Sau eventual sa am alternative sa propun

1 Like

2FA poate fi făcut în mai multe feluri:

  1. Cu aplicatii de genul G. Auth (mai sunt și altele, dacă nu mă înșel chiar și Microsoft are una)
  2. Prin SMS
  3. Prin Email
  4. Prin alte sesiuni. Poți vedea această funcționalitate la Apple, când încerci să te autentifici de pe un dispozitiv nou, îți cere confirmare pe celelalte dispozitive deja autentificate.
  5. O combinație între cele de mai sus. De exemplu la bittrex, dacă ți se schimbă IP-ul, te pune să te autentifici (cu tot cu 2FA), îți trimite un email de confirmare, după care te autentifici încă o dată (inclusiv 2FA).

Tu știi mai bine ce ai nevoie :slight_smile:

1 Like

generezi un certificat pe care i-l dai utilizatorului sa-l instaleze pe pc/browser.

Numai pentru clienti paranoici, recomand: DDA
Dance Dance Authentication
Nu stiu cat de eficienta este tehnica, dar sunt sigura ca le trateaza afectiunea.:smiley:

2 Likes

Legat de aceasta discutie am facut experiment care mi s-a parut interesant. Un serviciu web multiplatforma, compilat care ruleaza la cerere pe fiecare client autorizat si aplicatia web il intreaba de un set de informatii de identificare (eg. mac, diverse id-uri sistem, etc…) pe care numai statia autorizata le poate furniza si care in mod normal nu sunt accesibile din JS. Se pot imagina diverse scenarii si combinatii in acest sens. Odata preluate informatiile in JS stiti ce sa faceti cu ele, ideea e sa ajunga acolo :slight_smile:

Deocamdata este doar un experiment, daca cineva il considera util si vrea sa-l foloseasca/dezvolte/etc… feel free to do it :slight_smile:

2FA cu o solutie hardware a implementat cineva?

Presupun că vorbești de token, în genul celor de la bănci.

Nu am implementat, dar cred că tot procesul de înregistrare (scanare QR, validare cod) se mută din cârca utilizatorului în cârca administratorului. În rest… nu cred să difere prea mult :slight_smile:

Practic citesti un certificat din browser, cand introduci token-ul windows-ul/mac-ul iti citeste dispozitivul/smartcard-ul ca si un certificat sau exista o aplicatie pe care o deschizi, introduci parola si iti instaleaza certificatul in OS/browser.

1 Like

2FA-ul cu email cum e la ANAF mi se pare o solutie decenta ca si implementare/costuri. Practic te bazezi pe autentificarea din aplicatie + cea la email.
Veste proasta e ca cei care pierd accesul la email pierd automat si la aplicatie, dar in cazul ala au probleme mai mari de-atat.